您的位置:首页 > 编程语言 > Java开发

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

2014-08-07 10:40 239 查看
选择数组中最大值的算法的时间复杂度为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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: