public class Quicksort {
public void qsort(int list[], int left, int right) {
int low = left;
int high = right;
int tmp = list[low];
if(low >= high)
return;
while (low < high) {
while(low < high && list[high] >= tmp)
high--;
list[low] = list[high];
while(low < high && list[low] <= tmp)
low++;
list[high] = list[low];
}
list[low] = tmp;
qsort(list, left, low-1);
qsort(list, low+1, right);
}
}
public class QuickSort{
public int partition(int list[], int low, int high) {
int tmp = list[low];
while (low < high) {
while(low < high && list[high] >= tmp)
high--;
list[low] = list[high];
while(low < high && list[low] <= tmp)
low++;
list[high] = list[low];
list[low] = tmp;
}
return low;
}
public void qs(int list[], int low, int high) {
if(low < high) {
int mid = partition(list, low, high);
qs(list, low, mid-1);
qs(list, mid+1, high);
}
}
public void qsort(int list[]) {
qs(list, 0, list.length-1);
}
}