#include<stdio.h>
#define MAXSIZE 10000
typedef struct{
int key;
}RedType;
typedef struct{
RedType *r;
int length;
}SqList;
void InsertSort(SqList &L){//直接插入排序
int i,j;
for(i=2;i<=L.length;i++)
if(L.r[i].key<L.r[i-1].key){
L.r[0]=L.r[i];
L.r[i]=L.r[i-1];
for(j=i-2;L.r[0].key<L.r[j].key;j--)
L.r[j+1]=L.r[j];
L.r[j+1]=L.r[0];
}
}
void SelectSort(SqList &L){//简单选择排序
int i,j,k,t;
for(i=1;i<L.length;i++){
k=i;
for(j=i+1;j<=L.length;j++)
if(L.r[j].key<L.r[k].key)
k=j;
if(k!=i){
t=L.r[i].key;
L.r[i].key=L.r[k].key;
L.r[k].key=t;
}
}
}
int Partition(SqList &L,int low ,int high){//快速排序
int p;
L.r[0]=L.r[low];
p=L.r[low].key;
while(low<high){
while(low<high&&L.r[high].key>=p)
high--;
L.r[low]=L.r[high];
while(low<high&&L.r[low].key<=p)
low++;
L.r[high]=L.r[low];
}
L.r[low]=L.r[0];
return low;
}
void QSort(SqList &L,int low,int high){
int p;
if(low<high){
p=Partition(L,low,high);
QSort(L,low,p-1);
QSort(L,p+1,high);
}
}
void QuikSort(SqList &L){
QSort(L,1,L.length);
}
int main(){
SqList L;
L.r=new RedType[MAXSIZE+1];
int n,i;
scanf("%d",&n);
L.length=n;
for(i=1;i<=n;i++){
scanf("%d",&L.r[i].key);
}
// InsertSort(L);
// SelectSort(L);
QuikSort(L);
for(i=1;i<=n;i++){
printf("%d ",L.r[i].key);
}
return 0;
}
直接插入排序,简单选择排序,快速排序。
最新推荐文章于 2023-02-06 12:44:32 发布