java 快速排序 算法
2015-03-06 12:44
288 查看
[code]public class MyQuickSort { /** * 亲测绝对正确 * * */ public static void main(String[] args) { int[] ints = { 4, 9, 3, 10, 2, 0, 8, 1 }; int low = 0; int high = ints.length - 1; System.out.println("排序前:"); for (int i : ints) { System.out.print(i+","); } System.out.println(); System.out.println("排序后:"); MyQuickSort sort = new MyQuickSort(); sort.fastSort(ints, low, high); for (int i : ints) { System.out.print(i+","); } } /* 快速排序 */ private void fastSort(int[] ints, int low, int high) { int middle = 0; if (low < high) { // 1,找到第一次比较之后的中间位置 middle = doSort(ints, low, high); // 2,第一次比较后,middle将数组分成两部分,左边都是比ints[middle]小的,右边都是比ints[middle]大的, // 3,middle左边部分进行排序 fastSort(ints, low, middle - 1); // 4,middle右边部分进行排序 fastSort(ints, middle + 1, high); } } private int doSort(int[] ints, int low, int high) { // 一般从一个数组的第一个数开始比较 int data = ints[low]; while (low < high) { // data跟数组最后开始往前比,如果data<ints[high],high往前挪一位; while (data < ints[high] && low < high) { high--; } // 交换 swap(ints, low, high); // data跟数组最前开始往后比,如果data>ints[low],low往后挪一位; while (data > ints[low] && low < high) { low++; } // 交换 swap(ints, low, high); } // low=high的时候返回low,即为data在数组中的最终位置 return low; } private void swap(int[] ints, int low, int high) { if (low == high) { return; } int temp = ints[low]; ints[low] = ints[high]; ints[high] = temp; } }
相关文章推荐
- 算法外功修炼之一 快速排序的Java实现
- Java常见排序算法之快速排序
- Java 常用算法 插入,冒泡,快速排序大放送
- 8大内部排序算法学习笔记--(2)快速排序 Java实现
- 快速排序quicksort-算法导论java实现
- (基于Java)算法之快速排序
- Java与算法之(2) - 快速排序
- [算法入门]快速排序非递归方法(Java实现),大家一起来找茬啊~
- 算法积累_java_插入,选择,冒泡,快速排序
- 【牛客网】直通bat-面试算法精品课_第2章 排序 2.6 快速排序练习题(JAVA版)
- java 快速排序 算法
- 排序算法之快速排序、归并排序(java实现)
- 算法研究之快速排序java版
- 3.快速排序——啊哈算法java实现
- java基础知识之 算法 【冒泡排序】【快速排序】
- java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序
- 算法代码实现之快速排序,Java实现
- 算法代码实现之三向切分快速排序,Java实现
- Java算法之排序(快速,冒泡,归并,选择)
- java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排