#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 发布