排序-快速排序-优化-基准值选择待排序数组的三个等距取样的中位数
来源:互联网 发布:遥知不是雪是哪首诗 编辑:程序博客网 时间:2024/05/18 03:47
package xwq.sort;import xwq.util.In;import xwq.util.StdOut;/** * 使用三取样partition优化QuickSort */public class QuickSortMid { public static void sort(int a[]) { partition(a,0,a.length-1); } //划分 private static void partition(int a[],int low,int high) { if(low >= high) return; int N = high - low + 1; //抽取三个等距离的数,选择其中中位数作为基准值 if(N > 40) { int len = N/8; int mid = low+N/2; int m1 = median3(a,low,low+len,low+len+len); int m2 = median3(a,mid-len,mid,mid+len); int m3 = median3(a,high-len-len,high-len,high); int m = median3(a,m1,m2,m3); } else if(N >=3) { int m = median3(a,low,low+N/2,high); swap(a,low,m); } int pivot = a[low]; int l = low,h = high; while( l < h) { while(l<h && a[h]>=pivot) h--; if(l<h) swap(a,l++,h); while(l<h && a[l]<=pivot) l++; if(l<h) swap(a,l,h--); } a[l] = pivot; partition(a,low,l-1); partition(a,l+1,high); } /* * 返回3个数的中位数 */ private static int median3(int a[],int low,int mid,int high) { if(a[low] > a[mid] && a[low] < a[high]) return low; if(a[low] > a[mid] && a[mid] < a[high]) return mid; return high; } private static void swap(int a[],int i,int j) { int t = a[i]; a[i] = a[j]; a[j] = t; } public static void print(int a[]) { for (int i = 0; i < a.length; i++) StdOut.print(a[i] + " "); StdOut.println(); } // 测试函数 public static void main(String[] args) { int[] a = In.readInts(args[0]); sort(a); print(a); }}
0 0
- 排序-快速排序-优化-基准值选择待排序数组的三个等距取样的中位数
- 快速排序(基准是中位数)
- 快速排序、基准元的选取及其优化
- 两个排序数组的中位数
- 两个排序数组的中位数
- 两个排序数组的中位数
- 两个排序数组的中位数
- 两个排序数组的中位数
- 两个排序数组的中位数
- 两个排序数组的中位数
- 两个排序数组的中位数
- 数组的排序:冒泡排序、选择排序
- java 数组的排序,含冒泡、插入、选择、快速排序。
- 选择排序的优化
- 优化的选择排序
- 排序系列之三快速排序(递归每次选择数组中末尾数为基准)
- 冒泡排序,选择排序,插入排序,快速排序的比较及优化
- 数组的选择排序
- MFC学习(26)简单内存泄漏检测方法 解决 Detected memory leaks! 问题
- Xcode计算缓存文件大小和清除缓存
- 2016蓝桥杯假期任务之《 黄金连分数》
- git 使用 教程
- java注解开发
- 排序-快速排序-优化-基准值选择待排序数组的三个等距取样的中位数
- HDU 1003 Max Sum【最大子串和】
- 佛祖保佑 永无bug
- 从程序外部(浏览器)吊起app
- Umbraco(2)- Creating Your First Template and Content Node
- Eclipse 编写ANDROID 时在XML文件下无法自动生成R.java 成员变量id
- 优秀移动网站设计
- SpringMVC细节细节讲解
- 商业英语句型12