Witam wszystkich, to mój pierwszy post tutaj :) Mam kłopot z quicksortem w javie. Mianowicie trochę sortuje, ale nie tak, jak by się tego chciało. Prosiłbym o jakąś pomoc albo wskazówki, ponieważ siedzę nad tym i rwę sobię włosy z głowy :) Oto kod:
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
int tab[] = new int[10];
tab[0] = 3;
tab[1] = 1;
tab[2] = 74;
tab[3] = 15;
tab[4] = 26;
tab[5] = 52;
tab[6] = 12;
tab[7] = 44;
tab[8] = 17;
tab[9] = 9;
Quicksort tablica = new Quicksort(tab);
tablica.wyswietl(tab);
}
}
public class Quicksort {
int[] liczby;
public Quicksort(int tab[]){
liczby = tab;
sortuj(0, tab.length-1);
}
public void wyswietl(int tab[]){
for (int i=0; i<tab.length; i++){
System.out.print(tab[i] + " ");
}
}
public void zamienLiczby(int a, int b){
int temp = liczby[a];
liczby[a] = liczby[b];
liczby[b] = temp;
}
public void sortuj(int left, int right){
int m = (left+(right-left))/2;
int i = left;
int j = right;
while (i<=j){
while (liczby[i]<liczby[m]){
i++;
}
while (liczby[j]>liczby[m]){
j--;
}
if (i<=j){
zamienLiczby(i,j);
i++;
j--;
}
}
if (left < j){
sortuj(left,j);
}
if (right > i){
sortuj(right,i);
}
}
}