快排的主要思想就是:
1. 指定一个基准值(枢纽, 可以为第一个, 最后一个, 中值 或者 随即值)
2. 双向扫描, 发现高位有值小于基准值, 将高位值赋给低位, 并将低位加1; 发现低位值大于高位, 则将地位值赋给高位, 并将高位减1; 直到高低位重合。
3. 将基准值赋给当前低位或高位(重合了)。
4. 对当前低位或高位分开的两个子区间运用以上1到3步即可。
上代码:
1. 指定一个基准值(枢纽, 可以为第一个, 最后一个, 中值 或者 随即值)
2. 双向扫描, 发现高位有值小于基准值, 将高位值赋给低位, 并将低位加1; 发现低位值大于高位, 则将地位值赋给高位, 并将高位减1; 直到高低位重合。
3. 将基准值赋给当前低位或高位(重合了)。
4. 对当前低位或高位分开的两个子区间运用以上1到3步即可。
上代码:
private static void qsort(int[] source, int from, int to) { if (from < to) { int pivot = source[from]; int low = from, high = to; while (low < high) { while (low < high && source[high] >= pivot) high--; source[low] = source[high]; while (low < high && source[low] < pivot) low++; source[high] = source[low]; } source[low] = pivot; qsort(source, from, low - 1); qsort(source, low + 1, to); }}
本文介绍快速排序的基本思想与实现步骤:1.选取基准值;2.通过双向扫描将数据分为两部分,一部分比基准值小,另一部分比基准值大;3.递归地对两部分数据进行快速排序。
42万+

被折叠的 条评论
为什么被折叠?



