南京邮电大学——用分治法实现一组无序序列的快速排序
(非常简单,学弟学妹们不要直接复制粘贴,至少先在B站上听懂原理)
void swap(int *c,int *d){
int t;
t=*c;
*c=*d;
*d=t;
}
void quickSort(int a[],int left,int right){
if(left>=right)
return ;
int i,j;
int k;
k=a[left];
i=left;
j=right;
while(i!=j){
while(i<j&&a[j]>=k)
j--;
swap(a[i],a[j]);
while(i<j&&a[i]<=k)
i++;
swap(a[i],a[j]);
}
quickSort(a,left,i-1);
quickSort(a,i+1,right);
}
void input(int a[],int n){
int i;
for(i=0;i<n;i++){
cin>>a[i];
}
}
void output(int a[],int n){
int i;
for(i=0;i<n;i++){
cout<<a[i]<<" ";
}
}
int main(){
int n;
cout<<"快速排序算法"<<endl;
cout<<"请输入比较个数"<<endl;
cin>>n;
int a[n];
cout<<"请输入"<<n<<"个数"<<endl;
input(a,n);
quickSort(a,0,n-1);
cout<<"排序后序列是:"<<endl;
output(a,n);
cout<<endl;
}
运行结果: