关于求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;
}
相关文章推荐
- Linux C函数参考手册(PDF版)
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C# partial关键字说明
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- Lua教程(十七):C API简介
- 简单谈谈lua和c的交互
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#中的委托数据类型简介
- C#编写的艺术字类实例代码
- C#实现打造气泡屏幕保护效果
- C#实现的算24点游戏算法实例分析
- 举例讲解C#编程中委托的实例化使用
- 使用C#代码获取存储过程返回值