Chinaunix首页 | 论坛 | 博客
  • 博客访问: 661509
  • 博文数量: 156
  • 博客积分: 4833
  • 博客等级: 上校
  • 技术积分: 1554
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-21 19:36
文章分类

全部博文(156)

文章存档

2016年(2)

2013年(1)

2012年(13)

2011年(30)

2010年(46)

2009年(29)

2008年(23)

2007年(12)

分类: C/C++

2008-10-17 02:25:10

int findKth(int * begin, unsigned int length, unsigned int k)
{
    int *i, *m;
    int *l = begin;

    while (length >= 1)
    {
        m = l;

        for (i = l + 1; i < l + length; i++)
        {
            if (*i < *l)
            {
                swap(m, i);

            }
        }

        swap(m,l);


        if(m == begin + k-1 )
        { return *m;}
        else if (m  < begin + k-1)
        {
          length = length - (m+1-l );
          l = m+1;
        }
        else if(m > begin + k-1)
        {
          length =  (m-1-l+1);
        }


    }

    return *m;

}

阅读(1819) | 评论(0) | 转发(0) |
0

上一篇:Writing a Kernel Line Discipline

下一篇:qsort

给主人留下些什么吧!~~