#include<stdio.h>
typedef int InfoType;
#define N 10 //假设的文件长度,亟待排序的记录数目
typedef int KeyType;
typedef struct {
KeyType key;
InfoType otherinfo;
}RecType;
typedef RecType SeqList[N + 1];
int Partitio(SeqList R, int i, int j);
void main()
{
void QuickSort(SeqList R, int low, int high);
int i;
SeqList R;
printf("请输入需要排序的10个数字:\n");
for(i=1; i<=N; i++) {
scanf("%d", &R[i].key);
}
printf("排序前:\n");
for(i=1; i<=N; i++) {
printf("%d ", R[i].key);
}
printf("\n");
QuickSort(R, 1, N);
printf("排序后:\n");
for(i=1; i<=N; i++) {
printf("%d ", R[i].key);
}
}
void QuickSort(SeqList R, int low, int high)
{
int pivotpos;
if(low < high) {
pivotpos = Partition(R, low, high);
QuickSort(R, low, pivotpos - 1);
QuickSort(R, pivotpos + 1, high);
}
}
int Partition(SeqList R, int i, int j)
{
RecType pivot = R[i];
while(i < j) {
while(i<j && R[j].key >= pivot.key) {
j--;
}
if(i < j) {
R[i++] = R[j];
}
while(i<j && R[i].key <= pivot.key) {
i++;
}
if(i < j) {
R[j--] = R[i];
}
}
R[i] = pivot;
return i;
}
【算法】C语言实现的快速排序
最新推荐文章于 2024-01-25 11:00:35 发布