#include<iostream>
using namespace std;
int a[101],n;//定义全局变量,这两个变量需要在子函数中使用
void quicksort(int left,int right){
int i,j,t,temp;
if(left>right){
return;
}
temp=a[left];//temp中存的就是基准数
i=left;
j=right;
while(i!=j){
//顺序很重要,要先从右往左找
while(a[j]>=temp&&i<j){
j--;
}
//再从左往右找
while(a[i]<=temp&&i<j){
i++;
}
//交换两个数在数组中的位置
if(i<j){
//当哨兵i和哨兵j没有相遇时
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
//最终将基准数归位
a[left]=a[i];
a[i]=temp;
/*
这里的归位就是指把a[left]和a[i]交换:
temp=a[left];
a[left]=a[i];
a[i]=temp;
*/
quicksort(left,i-1);//继续处理左边的,这里是一个递归调用
quicksort(i+1,right);//继续处理右边的,这里是一个递归调用
}
int main(){
int i,j,t;
//读入数据
cout<<"请输入共有多少个数,即n=";
cin>>n;
cout<<"请依次输入n个数:"<<endl;
for(i=1;i<=n;i++){
cin>>a[i];
}
quicksort(1,n);//快速排序调用
cout<<"排序结果为:"<<endl;
for(i=1;i<=n;i++){
cout<<a[i]<<" ";
}
getchar();
return 0;
}
快速排序
最新推荐文章于 2023-10-09 11:55:24 发布