The codes might be not optimized, and the first elements of all arrays are chosen as the pivots, which will cause a tremendous slow-down when the array is sorted already.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| public static void swap(int[] ar, int a, int b){
int tmp = ar[a];
ar[a] = ar[b];
ar[b] = tmp;
}
public static int partition(int[] a, int left, int right) {
int pivot=a[left];
int m=left;
for(int i=left+1;i<=right;i++){
if (a[i]<pivot){
m++;
swap(a, i, m);
}
}
swap(a, left, m);
return m;
}
public static void quicksort(int[] a, int left, int right){
if (left>=right)
return;
int pivotIndex = partition(a, left, right);
quicksort(a, left, pivotIndex-1);
quicksort(a, pivotIndex+1, right);
} |