首页 > 其他 > 详细

顺序统计量

时间:2016-02-24 22:41:01      阅读:328      评论:0      收藏:0      [点我收藏+]

在一个n个元素组成的集合中,第i个顺序统计量是该集合中第i小的元素。

使用选择算法,可以在Θ(n)时间内找到第i个顺序统计量

  1. 对序列A进行划分,使得[s...p-1] < [p] < [p+1...e]
  2. 如果p==i,则返回A[p]
  3. 如果p>i,对[s...p-1]重新划分,反之对[p+1...e]重新划分
private static int Select(List<int> sq, int s, int e, int i)
{
    //如果s=e了,说明找到了
    if (s >= e)
        return sq[s];
    //划分
    int q = Partition(sq, s, e);
    //找到了
    if (q == i - 1)
        return sq[q];
    //前半部分找
    else if (q > i - 1)
    {
        return Select(sq, s, q - 1, i);
    }
    //后半部分找
    else
    {
        return Select(sq, q + 1, e, i);
    }
}

 

顺序统计量

原文:http://www.cnblogs.com/qiusuo/p/5215185.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!