use*_*610 0 java sorting algorithm quicksort
这是代码:
public class QuickSort {
public static void sort(int[] a) {
sort(a, 0, a.length-1);
}
private static void sort(int[] a, int lo, int hi) {
if(hi <= lo) return;
int j = partition(a, lo, hi);
sort(a, lo, j-1);
sort(a, j+1, hi);
}
private static int partition(int[] a, int lo, int hi) {
int v = a[0];
int i = lo, j = hi+1;
while(true) {
while(a[++i] < v) {
if(i == hi) {
break;
}
}
while(a[--j] > v) {
if(j == lo) {
break;
}
}
if(i >= j) {
break;
} else {
exch(a, i, j);
}
}
exch(a, lo, j); // <- exchange the value of a[lo] and a[j]
return j;
}
}
Run Code Online (Sandbox Code Playgroud)
我的代码出了什么问题?我知道这是一个非常简单的算法但是无法弄清楚问题出在哪里.
请提前帮助我.
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |