#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct{
int *elem;
int length;
int listsize;
}SqList;
int Partition(SqList &L,int low,int high)
{
int pivotkey;
L.elem[0]=L.elem[low];
pivotkey=L.elem[low];
while(low<high)
{
while(low<high&&L.elem[high]>=pivotkey)
--high;
L.elem[low]=L.elem[high];
while(low<high&&L.elem[low]<=pivotkey)
++low;
L.elem[high]=L.elem[low];
}
L.elem[low]=L.elem[0];
return low;
}
void QSort(SqList &L,int low,int high)
{
int pivotloc;
if(low<high)
{
pivotloc= Partition(L,low,high);
QSort(L,low,pivotloc-1);
QSort(L,pivotloc+1,high);
}
}
void InittList_Sq(SqList &L)
{
int i,n,listsize;
printf("请输入整数个数:\n");
scanf("%d",&listsize);
L.elem=(int *)malloc((listsize+3)*sizeof(int));
if(!L.elem)
exit(0);
printf("分别输入%d个数\n",listsize);
for(int i=1;i<=listsize;i++)
{
scanf("%d",&L.elem[i]);
}
L.length=listsize;
L.listsize=listsize+3;
n=L.length;
QSort(L,1,n);
printf("排序后的顺序为:\n");
for(i=1;i<=n;i++)
{
printf("%d ",L.elem[i]);
}
printf("\n");
}
void main()
{
SqList L;
InittList_Sq(L);
}
快速排序算法
最新推荐文章于 2024-11-10 18:26:35 发布
本文介绍了一个使用C语言实现的快速排序算法。通过定义一个结构体SqList来存储数组,并利用Partition函数进行分区操作,最终实现了对整数数组的快速排序。用户可以输入待排序的整数个数及具体数值,程序将输出排序后的结果。
3万+

被折叠的 条评论
为什么被折叠?



