public class 快排 {
/*
* 快速排序
*
* 参数说明:
* a -- 待排序的数组
* start -- 数组的左边界(例如,从起始位置开始排序,则start=0)
* end -- 数组的右边界(例如,排序截至到数组末尾,则end=a.length-1)
*/
private void quick_sort(int a[], int start, int end) {
if (start < end) {
int i,j,x;
i = start;
j = end;
x = a[i];
while (i < j) {
while(i < j && a[j] > x)
j--; // 从右向左找第一个小于x的数
if(i < j)
a[i++] = a[j];
while(i < j && a[i] < x)
i++; // 从左向右找第一个大于x的数
if(i < j)
a[j--] = a[i];
}
a[i] = x;
quick_sort(a, start, i-1); /* 递归调用 */
quick_sort(a, i+1, end); /* 递归调用 */
}
}
}
06-21
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交