快速排序
来源:互联网 发布:淘宝达人申请理由简述 编辑:程序博客网 时间:2024/05/20 14:43
/** * 快排 * * */public class FastSort { /** * 两边排序 * * @param arr * @param start * @param end */ public static void FSort(int[] arr, int start, int end) { if (start >= end) return; int pos = FindPos(arr, start, end); FSort(arr, start, pos - 1); FSort(arr, pos + 1, end); } /** * 交换arr[i]和arr[j]的位置 * * @param arr * @param i * @param j */ public static void swap(int[] arr, int i, int j) { int t = arr[i]; arr[i] = arr[j]; arr[j] = t; } /** * 按基准点排序 * * @param arr * @param start * @param end * @return */ public static int FindPos(int[] arr, int start, int end) { int base = arr[start]; int i = start; int j = end + 1; while (true) { while (arr[++i] < base && i < end) ; while (arr[--j] > base) ; if (i >= j) break; swap(arr, i, j); } arr[start] = arr[j]; arr[j] = base; return j; } public static void main(String[] args) { int[] arr = { 7, 2, 1, 20, 9, 0, 8 }; FSort(arr, 0, arr.length - 1); for (int i : arr) { System.out.print(i + " "); } }}
public class QuickSort { /** * 快速排序 * 1.基准元素为第一个元素,i为第一个元素的下标,j为最后一个元素的下标 * 2.j向前找,找到比基准元素值小的,赋值给j的位置;i向后找,找到比基准元素大的值,赋值给i的位置 * 3.i>=j的时候停止,基准元素左右两边分别重复上面步骤 */ public static int QSort(int start,int end,int[] arr){ int base=arr[start];//基点值 while(start<end){ while(arr[end]>=base&&start<end){ end--; } arr[start]=arr[end]; while(arr[start]<=base&&start<end){ start++; } arr[end]=arr[start]; } arr[start]=base; return start; } public static void EndSort(int start,int end,int[] arr){ if(start>=end){ return; } int position = QSort(start,end,arr); EndSort(start, position-1, arr); EndSort(position+1, arr.length-1, arr); } public static void main(String[] args) { // TODO Auto-generated method stub int arr[]={7,9,5,4,6}; EndSort(0,arr.length-1,arr); for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+" "); } }}
阅读全文
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 独行快、众行远,推荐几个优秀的原创公众号
- 通过system.currentTimeMillis() 获得当前的时间
- 互联网架构如何实现“高并发”
- IDEA web项目配置文件错误问题
- leetCode_2
- 快速排序
- leetcode 587. Erect the Fence 围栏最短 + 凸包优化
- 详解Android7.0及以上版本拍照或者相册选取照片包括裁剪照片时时App崩溃问题
- 公众号门店管理,上传图片到微信门店
- 尺寸位置操作
- C#真的过时了吗?
- myclipse编译mysql语句中文问题
- Qt开发-简易浏览器+无边框阴影可移动可拖动窗口代码分享
- php利用ob_start()清除输出和选择性输出