目录
题目描述
得到一个序列中第k个最小元素之前的部分排序序列。
来源:根据王道p335.2 [改]
解题思路
书中已经解答,最优解是堆排序,由于要得到前k小的元素,而大根堆排序每次选择的是最大元素,小根堆每次选择最小元素,故应使用小根堆排序,但注意,得到的是逆序。
宏定义
#define SqElemType int
#define MaxSize 1000
顺序表定义
typedef struct{
SqElemType data[MaxSize];
int length;
}SqList;
[注] 上述宏定义和结构体定义是答题时要写的答案,并不是代码实现时的定义,代码实现稍有不同,感兴趣可去“help.h”中查看。
实现函数
void WD_335_2_HeadAdjust(int *arr,int k,int len){
int temp=arr[k];
for(int i=2*k;i<len;i*=2){
if(i<len-1&&arr[i+1]<arr[i]) i++;
if(temp<&