目录
题目描述
试编写一个算法,使之能够在数组L[1...n]中找出第k小的元素(即从小到大排序后处于第k个位置的元素)。
来源:p324.5
解题思路
此题只要求找到第k小的元素,并不要求对顺序表进行排序,所以,采用快速排序的划分思想,找到位于第k个位置的枢轴元素即可。
宏定义
#define SqElemType int
#define MaxSize 1000
顺序表定义
typedef struct{
SqElemType data[MaxSize];
int length;
}SqList;
[注] 上述宏定义和结构体定义是答题时要写的答案,并不是代码实现时的定义,代码实现稍有不同,感兴趣可去“help.h”中查看。
实现函数
int WD_324_5(SqList *L,int k){
if(k<1||k>L->length) return -1;
int pivot=partation_1(L->data,0,L->length-1);
int l=0,r=L->length-1;
while(pivot!=k