您的位置:首页 > 其它

关于求N个无序数中第K大的数。

2016-04-01 21:24 344 查看


关于求N个无序数中第K大的数。

2012-03-16 来源:小木虫作者: SmallWarm

昨天去面试,有一题是要求求N个无序数中第K大的数。当时灵感激发,突然想到了快速排序,后来在百度上面一查,已有这种算法。但是,这里还是写下来,大家分享一下。

/*类似于快排的一次排序*/

int fun(int a,int n,int k) /*n个数的个数,k为所要求的第几大的数*/

{

int key=a;

int i=0,j=n-1;

while(i!=k-1&&j!=k-1)

{

while(i<k-1&&a while(j>k-1&&a>key) j--;

exchange(a,a);

}

if(i=k-1)

{

while(j!=k-1)

{

while(j>k-1&&a>key) j--;

exchange(key,a);

}

}

if(j=k-1)

{

while(i!=k-1)

{

while(i>k-1&&a>key) i++;

exchange(key,a);

}

}

return key;

}

void exchange(int a,int b) /* 交换a,b的值*/

{

a=a+b;

b=a-b;

a=a-b;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 C