QuickSort
来源:互联网 发布:mysql text 性能 编辑:程序博客网 时间:2024/05/07 08:40
取中间的元素s作比较,同样的先得往右找比s大的索引 i,然后往左找比s小的索引 j,只要两边的索引还没有交叉(也就i=j),就交换 i 与 j 的元素值。这里不用再进行轴的交换,因为在寻找交换的过程中,轴位置的元素也会参与交换的动作,轴已经成为一个抽象的概念,代表的是一个数值而已。
- public static void QuickSort(int[] number)
- {
- QuickSort(number, 0, number.length - 1);
- }
- /**
- * 将轴设定为中间的元素,依这个元素作基准进行比较,这可以增加快速排序法的效率
- * @param number 待排序数组
- * @param left 最小index
- * @param right 最大index
- */
- private static void QuickSort(int[] number, int left, int right)
- {
- if (left < right)
- {
- int s = number[(left + right) / 2];
- int i = left - 1;//中间元素作为基准,从0开始比较
- int j = right + 1;
- while (true)
- {
- // 1. 令索引 i 从数组左方往右方找,直到找到大于(不小于) s 的数的索引
- while (number[++i] < s){}
- // 2. 令索引 j 从数组右方往左方找,直到找到小于(不大于) s 的数的索引
- while (number[--j] > s){}
- // 3. 如果 i >= j,则退出循环
- if (i >= j) break;
- // 4. 如果 i < j,则交换索引i与j两处的值
- swap(number, i, j);
- }
- // 5. 对轴左边进行递归
- QuickSort(number, left, i - 1);
- // 6. 对轴右边进行递归
- QuickSort(number, j + 1, right);
- }
- }
- private static void swap(int[] number, int i, int j)
- {
- int t;
- t = number[i];
- number[i] = number[j];
- number[j] = t;
- }
- Quicksort
- QuickSort
- quicksort
- quicksort
- QuickSort
- QuickSort
- QuickSort
- QuickSort
- QuickSort
- QuickSort
- quicksort
- QuickSort
- QuickSort
- QuickSort
- quicksort
- quicksort
- QuickSort
- Quicksort
- 不能运行/action/test
- ASP数字、字母验证码(带随机杂点)
- 11
- fedora11飞鸽传书解决之道
- GRUB使用详解
- QuickSort
- SCJP: Sun Certified Java Programmer
- 2008.8.9 OA项目组一周工作报告
- Session 与SessionFactory
- 走近JRuby
- Oracle 9i 的安装(图解)
- VC常用数据类型的转换
- (php)取得瑞年与平年的天数(php)
- 给XP系统加油:让运行提速100%