1973 年,Blum、Floyd、Pratt、Rivest、Tarjan一起发布了一篇名为 “Time bounds for selection” 的论文,给出了一种在数组中选出第k大元素平均复杂度为O(N)的算法,俗称”中位数之中位数算法”。同样的道理也可以使用该算法对数组进行排序。时间复杂度可以被证明是O(N).下面给出代码:
/**
* Created by wlcheng on 15/9/20.
*/
public class BFPTRSortRefine {
static int scope =5;
public static void main(String[] args) {
int[] arr = new int[]{
5,6,8,7,3,2,1,4,10,20,39,12,21,19,27,23,25,6,7};
bfptrSort(arr);
for(int i=0;i<arr.length;i++){
System.out.print(arr[i] + " ");
}
}
public static int