黑马程序员技术交流社区
标题:
关于快速排序的问题
[打印本页]
作者:
侯凯斌
时间:
2012-11-15 11:24
标题:
关于快速排序的问题
快速排序的具体原理是什么,下面代码为例,请各位老师帮我解释一下,小菜鸟,脑子转不过来 ,万分感谢
private static void QuickSort(int[] array, int from, int to) {
if (from < to) {
//
int temp = array[to];
int i = from - 1;
for (int j = from; j < to; j++) {
if (array[j] <= temp) {
i++;
int tempValue = array[j];
array[j] = array[i];
array[i] = tempValue;
}
}
array[to] = array[i+1];
array[i+1] = temp;
QuickSort(array, from, i);
QuickSort(array, i + 1, to);
}
}
作者:
刘腾
时间:
2012-11-15 11:36
原理我曾经在其他帖子里解释过,这里就不再重复的讲了。你可以去看下
http://bbs.itheima.com/thread-31007-1-1.html
作者:
曾观富
时间:
2012-11-15 12:02
关于快速排序,你可以参看我的博文,上面有详细解释。地址:http://blog.sina.com.cn/s/blog_ba289cbf0101cytr.html
作者:
李计伟
时间:
2012-11-15 12:05
public static void quickSort(int[] a) {
quickSort(a, 0, a.length - 1);
}
private static void quickSort(int[] a, int start, int end) {
int left = start;
int right = end - 1;
int pivot = a[end];
while (left < right) {
if (a[left] <= pivot) {
left++;
continue;
}
if (a[right] > pivot) {
right--;
continue;
}
swap(a, left++, right);
}
// 左向右方向没有找到,就已经与右向左重合了。
if (a[left] < pivot) {
left++;
}
swap(a, left, end);
if(left - 1 > start) {
quickSort(a, start, left - 1);
}
if(left + 1 < end) {
quickSort(a, left + 1, end);
}
}
复制代码
464574757.jpg
(149.63 KB, 下载次数: 13)
下载附件
2012-11-15 12:01 上传
作者:
侯凯斌
时间:
2012-11-15 12:21
非常感谢给我老师,受教了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2