码迷,mamicode.com
首页 > 其他好文 > 详细

顺序统计量

时间:2016-02-24 22:42:05      阅读:221      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!