八大排序算法之快速排序
2017-09-25 15:15
246 查看
/** * Created by leixingbang on 2017/9/7. * 快排最主要思想是分治思想: * (1)找出基线条件 * (2)不断拆分,缩小问题规模,使其满足基线条件 * 对快排来说 * (1)基线条件:空数组或者只有一个元素的数组 * (2)将大的数组拆分为两个满足条件的小数数组+基准值:左侧小于基准值的子数组+基准值+右侧大于基准值的子数组 * (3)递归拆分子数组,使其满足条件 */ public class MyQuickSort2 { public static int getMiddleIndex(int []array,int i,int j) { int middle=array[i];//任选一个元素作为基准值,这里选择第一个元素作为基准条件 while (i<j) { while(i<j) { //从右向左找到比基准条件小的数字,并将其位置与middle所在的位置进行狡猾 if(array[j]>=middle) j--; else { //找到该位置 array[i] = array[j]; break; } } while (i<j) { //从左向右找到比基准条件大的数字 if(array[i]<=middle) i++; else { array[j]=array[i]; break; } } } array[i]=middle; return i; } public static void sort(int []array,int low,int high) { //low<high用于控制边界条件,假如只有1个元素,则low=high=0 //加入只有两个元素,则调用getMidlldleIndex后,相当于对调,再次sort进入只有一个元素状态。 if(low<high) { int index = getMiddleIndex(array, low, high); sort(array, low, index - 1); sort(array, index + 1, high); } } public static void main(String[] args) { int []array={5,3,6,1,2}; // getMiddleIndex(array,0,array.length-1); sort(array,0,array.length-1); for(int i=0;i<array.length;i++) { System.out.print(array[i]+","); } } }
相关文章推荐
- 八大排序算法(六)快速排序
- 八大排序算法:简单插入排序、冒泡排序、希尔排序、快速排序、堆排序、归并排序等总结。
- 八大排序算法总结之一(冒泡排序,快速排序,直接插入排序,希尔排序)
- 八大排序算法-快速排序
- 八大排序算法之快速排序
- 八大排序算法总结之一(冒泡排序,快速排序,直接插入排序,希尔排序)
- 八大排序算法之-快速排序 java代码
- 数据结构与算法简记:快速排序
- Shell排序,快速排序
- php使用递归与迭代实现快速排序示例
- jqGrid+FastJson+MybatisPlus快速开发分页排序和增删改查。
- 快速排序
- 快速排序的Partition函数
- 洛谷 P1177 【模板】快速排序
- java 快速排序,冒泡排序
- hdu 2604矩阵快速排序
- 快速排序 c++
- 快速排序
- 算法之 快速排序
- 算法导论-9.3-3-快速排序-最坏时间O(nlgn)