/**
* @author huangke
* @date 2021/7/14 17:39
*/
public class QuickSort {
public static void main(String[] args) {
QuickSort quickSort = new QuickSort();
int[] nums = new int[]{5,3,2,6,7,8,9,5,2,100,6,8,9,2,3,85,6,4,7};
quickSort.quickSort(nums, 0, nums.length - 1);
System.out.println(Arrays.toString(nums));
}
public void quickSort(int[] nums, int start, int end){
if (end <= start){
return;
}
// 标杆数
int base = nums[start];
// i从左向右,j从右向左
int i = start, j = end;
while (i < j){
/**
* 一定要先从右边过来,这样才能确保nums[i]小于base!!!
*/
while (nums[j] >= base && i < j){
j--;
}
while (nums[i] <= base && i < j){
i++;
}
// 要这里了,说明从左边找到了比base大的数,从右边找到了比base小的数,交换
// 并且也要判断下i和j的关系
if (i < j){
swap(nums, i, j);
}
}
// 到这里,再交换base与nums[i]的值
nums[start] = nums[i];
nums[i] = base;
quickSort(nums, start, i - 1);
quickSort(nums, j + 1, end);
}
public void swap(int[] nums, int i, int j){
nums[i] = nums[i] ^ nums[j];
nums[j] = nums[i] ^ nums[j];
nums[i] = nums[i] ^ nums[j];
}
}
快速排序
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 欢迎探讨,如有错误敬请指正 如需转载,请注明出处http://www.cnblogs.com/nullzx/ 1....
- 从上到下都是基于上面的排序算法进行优化 swap方法原型 Java快速排序 从序列中挑选出一个元素(一般是第一个或...
- 快速排序,是一种既不浪费空间,算法执行效率又快速的“折中”排序算法,适用于顺序很乱、很长的数字序列, 一、快速排序...
- 今天青石的票圈出镜率最高的,莫过于张艺谋的新片终于定档了。 一张满溢着水墨风的海报一次次的出现在票圈里,也就是老谋...