找到整数数组中第m大的数
来源:互联网 发布:淘宝怎么设置微淘 编辑:程序博客网 时间:2024/06/07 10:04
思路:
排序过程中找到,而不是全部排成有序再找。排序算法使用快排。
int QSort(int arr[], int n, int m)
{
int i = 0;
int j = n-1;
if (n<1)
{
return 0;
}
int pivot = arr[i];
while (i<j)
{
while(i<j && pivot<=arr[j])
{
j--;
}
if(i<j)// found a smaller(than pivot) number
{
arr[i++] = arr[j];
}
while(i<j && arr[i]<=pivot)
{
i++;
}
if(i<j)
{
arr[j--] = arr[i];
}
}
arr[i] = pivot;
if (i+1 == m)
{
return arr[i];
}
else if (i+1 > m)
{
return QSort(arr, i, m);
}
else
{
QSort(&arr[i+1], n-i-1, m-i-1);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int arr[] = {8,12,14,1,3,5,7,16,19};
for(int i = 0;i<9;i++)
{
int nth = QSort(arr, 9, i+1);
cout<<i+1<<"th:"<<nth<<endl;
}
}
http://www.dreamincode.net/forums/topic/61496-find-n-max-elements-in-unsorted-array/
- 找到整数数组中第m大的数
- 在无序数组中找到第k大的数
- 求一个整数数组中第N大的数
- 给定一个数组,找到第k到m(0<k<=m<=n)大的数
- 有一个整数数组,然后有一个数m,要找到整数数组中,所有和等于m的组合,并输出。
- 在BST中找到第k大的数
- 数组中第k大的数
- 数组中第K大的数
- 数组中第K大的数
- 在数组中找到第 k 小的数
- 由无序数组中找到第K 大的元素
- 无序数组中找到第k大的元素
- 在数组中找到第k大的元素
- 查找整数数组中第二大的数
- 012 查找整数数组中第二大的数
- 函数查找一个整数数组中第二大的数
- 求一个整数数组中第二大的数
- 找出一个整数数组中,第二大的数
- 关于通配符
- 40个管理概念
- 微软的三道题
- IT成本管理的实施过程
- Windows中注册ActiveX控件的方法(转载)
- 找到整数数组中第m大的数
- 包和接口
- .NET学习 流程控制习题以及答案
- 索引器的使用
- px和dip的关系理解
- 主题:负载均衡主要的实现技术
- Oracle拆分字符串函数
- AIX创建用户提示错误:name is too long
- VirtualKD+Windbg+vmware 极速调试