public class QuickSort {
public static void main(String[] args) {
int[] nums = {7, 4, 6, 5, 8, 1, 3};
System.out.println(arrayToString(nums));
sort(nums, 0, nums.length - 1);
System.out.println(arrayToString(nums));
}
public static String arrayToString(int[] nums) {
String str = "";
for (int num : nums) {
str += num + " ";
}
return str;
}
public static void sort(int[] nums, int starts, int ends) {
if (starts > ends) {
return;
}
int base = nums[starts]; // 把第一个数当作基准数
int i = starts;
int j = ends;
while (i < j) {
// 将基准值与右侧数值做比较,查找比base小的数值,获取下标 j, j 从右向左移动
while (base <= nums[j] && i < j) {
j--;
}
System.out.println("j = " + j);
// 将基准值与左侧数值做比较,查找比base大的数值,获取下标 i, i 从左向右移动
while (base >= nums[i] && i < j) {
i++;
}
System.out.println("i = " + i);
// 交换 i 和 j 的值
if (i < j) {
System.out.println("交换" + nums[i] + "和" + nums[j]);
int temp = nums[j];
nums[j] = nums[i];
nums[i] = temp;
}
}
// 完成循环后将base值放到中间位置
System.out.println("+++" + arrayToString(nums));
nums[starts] = nums[i];
nums[i] = base;
sort(nums, starts, i-1);
sort(nums, j+1, ends);
}
}
[小练习] 快速排序
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 欢迎探讨,如有错误敬请指正 如需转载,请注明出处http://www.cnblogs.com/nullzx/ 1....
- 从上到下都是基于上面的排序算法进行优化 swap方法原型 Java快速排序 从序列中挑选出一个元素(一般是第一个或...
- 注:本文如涉及到代码,均经过Python 3.7实际运行检验,保证其严谨性。 本文阅读时间约为5分钟。 排序与查找...
- import java.util.Arrays; import java.util.Random; public ...