#include<stdio.h> int Partition ( SqList &L,int low, int high ) { L.r[0] = L.r[low]; pivotkey = L.r[low].key; while ( low < high ) { while ( low < high && L.r[high].key >= pivotkey ) --high; L.r[low] = L.r[high]; while ( low < high && L.r[low].key <= pivotkey ) ++low; L.r[high] = L.r[low]; } L.r[low]=L.r[0]; return low;} void QSort ( SqList &L,int low, int high ) { if ( low < high ) { pivotloc = Partition(L, low, high ) ; Qsort (L, low, pivotloc-1) ; Qsort (L, pivotloc+1, high ) } } void main ( ) { QSort ( L, 1, L.length ); }补全程序以实现快速搜索
时间: 2024-04-28 09:27:12 浏览: 186
根据代码中的提示,需要实现快速排序算法。
完整的程序如下:
```c
#include<stdio.h>
#define MAXSIZE 100
typedef struct{
int key;
// 其他数据域
}ElemType;
typedef struct{
ElemType r[MAXSIZE+1]; // r[0] 作为哨兵或临时变量
int length;
}SqList;
int Partition(SqList &L, int low, int high){
L.r[0] = L.r[low];
int pivotkey = L.r[low].key;
while(low < high){
while(low < high && L.r[high].key >= pivotkey){
--high;
}
L.r[low] = L.r[high];
while(low < high && L.r[low].key <= pivotkey){
++low;
}
L.r[high] = L.r[low];
}
L.r[low] = L.r[0];
return low;
}
void QSort(SqList &L, int low, int high){
if(low < high){
int pivotloc = Partition(L, low, high);
QSort(L, low, pivotloc-1);
QSort(L, pivotloc+1, high);
}
}
int main(){
SqList L = {{0, 50, 10, 90, 30, 70, 40, 80, 60, 20}, 9};
QSort(L, 1, L.length);
for(int i=1; i<=L.length; i++){
printf("%d ", L.r[i].key);
}
return 0;
}
```
在上面的代码中,`Partition` 函数用于将数组分为两部分,并返回分界点的位置,`QSort` 函数是递归实现的快速排序算法。
程序使用了 `typedef` 关键字定义了 `ElemType` 和 `SqList` 两个数据类型,其中 `SqList` 类型包含了一个 `ElemType` 类型的数组和该数组的长度。在 `main` 函数中,程序初始化了一个 `SqList` 类型的变量,并对其进行排序。
阅读全文