Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Quicksort problem u javi

[es] :: Java :: Quicksort problem u javi

[ Pregleda: 1095 | Odgovora: 4 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Ivan_81
Nemacka

Član broj: 57001
Poruke: 7
*.dip.t-dialin.net.

Sajt: www.biberce.net


Profil

icon Quicksort problem u javi 30.04.2005. u 00:05

moze li mi neko pomoci oko ovog java coda, naime moram da napisem quicksort algoritam u javi , za pivot element treba da uzme zadnji odnosno desni element, ali nekako da mi krene odnsno da code proradi , pa ako mi moze neko pomoci ili barem ukazati gde mi je greska? kako to da uradim? posto treba do nedelje da predam jos par verzija tog quicksorta , ali im se samo pivot element menja a ostalo osaje isto. Pa vas zato ja molim za pomoc ako je neko spreman i zna da mi pomogne, bio bi mu veoma zahvalan. Unapred hvala

static int quicksort3 (String [][] records, int left, int right) {
// Quicksort-Algorithmus
int i,j,counter;
String pivot,temp;
String [][] m = new String [1][3];
i = left -1;
j = right;
counter= 42;
if (right>left){
//String tmp = null;
//i = left - 1;
//j = right ;
pivot = records[j][0];
counter += 4;
while(i<j) {
do i++; while(records[0].compareTo(pivot)< 0 && records[0].compareTo(records[j][0])<0 );
System.out.println(i);
counter +=45;

do j--; while(records[j][0].compareTo(pivot)>=0 && j >i );
System.out.println(j);
counter +=44;
if (i >= j){
pivot = records[0] ;
counter +=4;
break;}

temp = records[0];
records[0]=records[j][0];
records[j][0]= temp ;
counter +=6;
}
temp = records[0];
records[0]= records[right][0];
records[right][0]= temp ;
counter +=86;}
quicksort3(records,left,i-1);
quicksort3(records,i+1,right);

return counter; // You should return the value of the execution time counter here
}
30.04.2005. u 00:05 

jandrla

Član broj: 8087
Poruke: 45
*.53.eunet.yu.



Profil

icon Re: Quicksort problem u javi 30.04.2005. u 13:21
Stvarno ne mogu da se bakcem sa kodom, ali mogu da ti dam
jedan od najstandardnijih kodova za quicksort, pa se
nadam da ce ti posluziti.
Pozdrav.

import java.io.*;

public class quicksort
{

/* Metod partition particionise deo niza na intervalu [l, r]
tako da je uredjen na sledeci nacin:
elementi koji su manji od pivota smestaju se levo
od njega a elementi koji su veci desno.
Za pivot se uzima krajnji desni element intervala. */
public static int partition(String[] a, int l, int r)
{
String temp;
int first;


first = r; // Cuva indeks prvog elementa koji je veci od pivota.
for(int i = r - 1; i >= l; i--)
if(a.compareTo(a[r]) > 0)
{
first--;

temp = a;
a = a[first];
a[first] = temp;
}

/* Ostalo je jos umetnuti pivot element na svoje mesto.
Indeks na kom treba da se umetne element sacuvan je
u promenljivoj first. */
temp = a[first];
a[first] = a[r];
a[r] = temp;

return first;
}

public static void quicksort(String[] a, int l, int r)
{
if(l >= r)
return;

int pivot = partition(a, l, r);

quicksort(a, l, pivot - 1);
quicksort(a, pivot + 1, r);
}

public static void main(String[] args)
{
String[] a = {"G", "D", "E", "F", "C", "A", "B"};
int n = a.length;

quicksort(a, 0, n - 1);

for(int i = 0; i < n; i++)
System.out.println(a + " ");
}
}



30.04.2005. u 13:21 

jandrla

Član broj: 8087
Poruke: 45
*.53.eunet.yu.



Profil

icon Re: Quicksort problem u javi 30.04.2005. u 13:24
Ne znam sta se desilo prilikom Copy - Paste - a, ali poslednji
println treba da izgleda ovako:
System.out.println(a + " ");
a ne
System.out.println(a + " ");
30.04.2005. u 13:24 

jandrla

Član broj: 8087
Poruke: 45
*.53.eunet.yu.



Profil

icon Re: Quicksort problem u javi 30.04.2005. u 13:27
Opet isto, nesto cudno se desava.
a[ i ] umesto a.
30.04.2005. u 13:27 

Ivan_81
Nemacka

Član broj: 57001
Poruke: 7
*.dip.t-dialin.net.

Sajt: www.biberce.net


Profil

icon Re: Quicksort problem u javi 30.04.2005. u 18:35
Sredio sam taj primer nekako , hvala na pomoci. Ali sada imam sledeci problem treba da uradim isti algoriman ali koji ce da da uzmeprvi zadnji i srednji element i od njih da nadje naj veci i da ga postavi u sredini i odatle da pocne da ga deli. a imam dve liste to su [0] i [1] . I sada mi je proble oko nalazenja srednje vrednosti, ja sam to napisao ja elemente [0] i [j][0] , ali kako mogu to sada naj bolje preneti na [1] i [j][1] a da ne moram da pisem ceo kod za [1] i [j][1] . Molim nekog ako moze da mi pomogne da mi nipaise ili da mi objasni kako da prenesem to da vazi i za [1] i [j][1] , Unapred hvala
a moj code je sledeci :

if (records[0].compareTo(records[median][0])> 0) {
temp = records[0];
records[0] = records[median][0];
records[median][0] = temp ;
counter += 6 ;
}
if (records[0].compareTo(records[j][0])> 0){
temp = records[0];
records = records[j];
records[j][0] = temp ;
counter += 6 ;
}
else if (records[j][0].compareTo(records[median][0])>0){
temp = records[j][0];
records[j][0] = records[median][0] ;
records[median][0] = temp ;
counter += 6 ;
}
pivot = records[median][0];
pivot1 = records[median][1];
30.04.2005. u 18:35 

[es] :: Java :: Quicksort problem u javi

[ Pregleda: 1095 | Odgovora: 4 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.