Java 期望为线性时间的选择算法

来源:互联网 发布:新西兰导航软件mate 编辑:程序博客网 时间:2024/04/27 20:38

选择数组中最大值的算法的时间复杂度为O(n-1);

选择数组中最小值的算法的时间复杂度为O(n-1);

但是同时选择最大值和最小值的时间复杂度为O(3n/2);


在数组中选择第i小得数算法的期望时间为线性

算法采用快速排序核心思想

  public int  select(int[] array, int sta, int end,int index){// index 要查找第index 小得值        if(sta == end)            return array[sta];        int q = partition(array,sta,end) ;        int k = q - sta + 1;        if(k == index)            return array[q];        else if(index < k)            return select(array, sta, q-1, index);        else            return select(array, q+1, end, index - k);    }

partition 函数,请参照 

Java 排序之 快速排序文章;

http://blog.csdn.net/alvintech14/article/details/38403753

0 0
原创粉丝点击