//数组实现快速排序 #include <iostream> using namespace std; void sort(int array[],int X,int Y) { int z,y,i,k; if(X<Y) { z=X; y=Y; k=array[z]; //key值 do { while((z<y)&&(array[y]>=k)) y--; if(z<y) //右边的元素小于k,移到k左 { array[z]=array[y]; z=z+1; } while((z<y)&&(array[z])<=k) z++; if(z<y) //左边的元素大于k,移动右边 { array[y]=array[z]; } } while(z!=y); array[z]=k;//复制key值到array[z] // for(i=X;i<=Y;i++) // { // cout<<"a["<<i<<"]="<<array[i]<<";"; // } // cout<<endl; sort(array,X,z-1);// 对z的左侧进行sort操作 sort(array,z+1,Y);// 对z的右侧进行sort操作 } } int main() { //int a[10],i; // cout<<"请输入10个数"<<endl; char A; do { int const N=100; int a[N]; int n; cout<<"请输入需要排序的数字个数: "; cin >> n; cout<<"请输入 "<< n <<" 个数字:"; for(int i=0;i<n;i++) { cin>>a[i];//输入 } sort(a,0,n-1);//调用排序函数sort cout<<"快速排序结果为"; for (i=0;i<n;i++) cout<<a[i]<<" ";//输出排序后的结果 cout<<"是否继续(y/n):"<<endl; cin>>A; } while(A!='n' && A!='N'); return 0; }