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

Quicksort problem u javi

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

[ Pregleda: 3828 | Odgovora: 4 ] > FB > Twit

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 - pre 231 meseci
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
}
 
Odgovor na temu

jandrla

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



Profil

icon Re: Quicksort problem u javi 30.04.2005. u 13:21 - pre 231 meseci
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 + " ");
}
}



 
Odgovor na temu

jandrla

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



Profil

icon Re: Quicksort problem u javi 30.04.2005. u 13:24 - pre 231 meseci
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 + " ");
 
Odgovor na temu

jandrla

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



Profil

icon Re: Quicksort problem u javi 30.04.2005. u 13:27 - pre 231 meseci
Opet isto, nesto cudno se desava.
a[ i ] umesto a.
 
Odgovor na temu

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 - pre 231 meseci
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];
 
Odgovor na temu

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

[ Pregleda: 3828 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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