【经典算法】第一回:快速排序
2013-02-21 15:23
204 查看
1.概述
快速排序(Quick sort) 原理:选取一个基数,通过一次扫描将要排序的数据分割成两部分,其中一部分所有数据都比这个基数小,另外一部分所有数据都不小于这个基数,然后按照此方法进行递归,已达到排序。
方法步骤:
设定要排序的起始和结束位置
选一个基数,一般直接选这个起始和结束坐标的中间坐标
已这个基数为准,循环遍历集合,从起始坐标开始,把大于基数的放在基数的右边,从结束坐标开始查找,把小于基数的放在基数的左边。
一次排序后,左边的数据都小于基数,右边的都大于基数,再重新开始上面的步骤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 = new[] { 4, 1, 2, 7, 9, 0, 8 }; // Sorter.QuickSort(list, 0, 7);
相关文章推荐
- 白话经典算法系列之六 快速排序 快速搞定
- 经典算法回顾:快速排序
- 转 白话经典算法系列之六 快速排序 快速搞定
- 白话经典算法系列之六 快速排序 快速搞定
- 白话经典算法系列之六 快速排序 快速搞定
- Java(.NET)经典排序算法之快速排序
- 【经典算法】快速排序
- 白话经典算法系列之六 快速排序 快速搞定
- 白话经典算法系列之六 快速排序 快速搞定
- 白话经典算法系列之六 快速排序 快速搞定
- java经典算法之快速排序
- 白话经典算法系列之六 快速排序 快速搞定
- 白话经典算法系列之六 快速排序 快速搞定
- 白话经典算法系列之六 快速排序 快速搞定
- 经典算法——快速排序
- 经典算法 之 快速排序 QuickSort
- 白话经典算法系列之六 快速排序 快速搞定
- 白话经典算法系列之六 快速排序 快速搞定
- 白话经典算法系列之六 快速排序 快速搞定
- 白话经典算法系列之六 快速排序 快速搞定