寻找无序数组中的第K大数
2012-02-08 23:07
218 查看
利用快速排序的思想,其中K从1开始
例如寻找5, 2, 6, 3中的第3大数,排好序后变为2 , 3 , 5 , 6 , 故结果为5,可以利用上述函数cout<< quicksort(x , 0 , 3 , 3)<<endl;
注意数组从0开始,
int quicksort(int * x , int l , int r , int k) { if(l == r && k==1)return x[l]; int i , j ; for(i=l-1 , j=l;j<r;j++) if(x[j]<x[r])std::swap(x[++i] , x[j]); std::swap(x[++i] , x[r]); if(k==(i-l+1))return x[i]; if(k<=(i-l))return quicksort(x , l , i-1 , k); if(k>(i-l+1)) return quicksort(x , i+1 , r , k-(i-l+1) ); }
例如寻找5, 2, 6, 3中的第3大数,排好序后变为2 , 3 , 5 , 6 , 故结果为5,可以利用上述函数cout<< quicksort(x , 0 , 3 , 3)<<endl;
注意数组从0开始,
相关文章推荐
- 寻找单个无序数组中第K小的数字
- 寻找无序数组中第k大的数
- 寻找无序数组中的第K大数
- 寻找无序数组中第k大的数——快排思想
- 寻找无序数组中的第K大数
- 寻找无序数组中的第K大数和前K大数
- C#递归算法寻找数组中第K大的数
- 在无序数组中找第k大的数字—滴滴笔试
- 寻找数组里第K 小的数
- 面试题—— 找出一个无序整型数组中第k大的数。
- 利用快速排序的思想寻找乱序数组第k大数
- 两个有序数组中,寻找第K大的数
- 有序和无序数组的二分搜索算法+select第k小的元素
- 【算法】寻找数组第K大数算法总结
- 算法设计--查找无序数组中第K大的数字
- 算法导论:快速找出无序数组中第k小的数
- 寻找数组中第K大数
- 无序数组找出其中的第K大的数
- 一个无序数组中第K大的元素
- 算法设计--查找无序数组中第K大的数字