【QuickSort】

来源:互联网 发布:nginx日志分析 编辑:程序博客网 时间:2024/05/02 00:12

1.概述

快速排序(Quick sort) 原理:

选取一个基数,通过一次扫描将要排序的数据分割成两部分,其中一部分所有数据都比这个基数小,另外一部分所有数据都不小于这个基数,然后按照此方法进行递归,已达到排序。

 

方法步骤:

  1. 设定要排序的起始和结束位置
  2. 选一个基数,一般直接选这个起始和结束坐标的中间坐标
  3. 已这个基数为准,循环遍历集合,从起始坐标开始,把大于基数的放在基数的右边,从结束坐标开始查找,把小于基数的放在基数的左边。
  4. 一次排序后,左边的数据都小于基数,右边的都大于基数,再重新开始上面的步骤1,2,3

2.示例

public static void QuickSort(int[] nums, int left, int right) {if (left < right) {int i = left;int j = right - 1;int middle = nums[(left + right) / 2];// 中间基数while (true) {while (i < right && nums[i] < middle)// 从左边开始搜索第一不小于基数的值,放到右边{i++;}while (j > 0 && nums[j] > middle)// 从右边开始搜索第一个小于基数的值,放到左边{j--;}if (i == j)break;int temp = nums[i];nums[i] = nums[j];nums[j] = temp;if (nums[i] == nums[j])j--;}QuickSort(nums, left, i);QuickSort(nums, i + 1, right);}}//int[] list = { 4, 1, 2, 7, 9, 0, 8 };//Quick.QuickSort(list, 0, 7);

转载自


0 0
原创粉丝点击