📄 快速排序.cpp
字号:
#include<stdio.h>
int N=3;
typedef struct{
char name[20];
int score;
}snode;
int partition(snode *r,int i,int j);
void quicksort(snode *r,int low,int high);
void outlist(snode* r);
main(){
int i;
snode *r;
printf("输入所要排序的元素的数目N=");
scanf("%d",&N);
r=new snode[N+1];
printf("input score:");
for(i=1;i<N+1;i++)
scanf("%d",&r[i].score);
quicksort(r,1,N);
outlist(r);
delete[]r;
}
int partition(snode *r,int i,int j){
snode pivot=r[i];
while(i<j){
while(i<j&&r[j].score>=pivot.score) j--;
if(i<j)r[i++]=r[j];
while(i<j&&r[i].score<=pivot.score) i++;
if(i<j)r[j--]=r[i];
}
r[i]=pivot;
return i;
}
void quicksort(snode *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);
}
}
void outlist(snode* r){
int i;
printf("排序后:\n");
for(i=1;i<=N;i++)
printf("%d,",r[i].score);
printf("\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -