Chinaunix首页 | 论坛 | 博客
  • 博客访问: 173565
  • 博文数量: 108
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 1065
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-29 08:56
文章分类

全部博文(108)

文章存档

2011年(11)

2010年(46)

2009年(29)

2008年(22)

我的朋友

分类: 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;

}

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

上一篇: 单链表排序(better)

下一篇:qsort

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