速览
无序整数数组查找第k个最大的数
对于无序整数数组查找第k个最大的数,主要分为如下两种情况
- 内存足够
- 快排
- 二分
- 按数值区间二分
- 按位二分
- 内存不足
- 堆排序(维护一个堆)
- 数据范围取值不大
- 键值索引
算法详解
内存足够
快排
算法思想
避免对所有数进行排序,采用快速排序分堆,并递归其中一半,直到所有<val[pivot]
的数量为k
伪代码
int quickSort(int[]& num,int _begin,int _end){
int i=_begin,j=_end;
int pivot=num[0];
while(i<j){
while(i<j && num[j]<=pivot) j--;
while<