#include<iostream> using namespace std; void swap(int &x,int &y) //交换两个数 注意这里的参数是引用类型的 { int temp; temp=x; x=y; y=temp; } //快速排序的重点// void qkpass(int r[],int s,int t,int &i) //注意这儿的i是引用类型 必须的 { int j; int x; //用于保存i号元素的值 i=s; j=t; x=r[i]; //将第i号元素标记赋给x保存 while(i<j) //快速排序的精髓// { while((i<j)&&(r[j]>=x))j--; swap(r[i],r[j]); while((i<j)&&(r[i]<=x))i++; swap(r[i],r[j]); } } void qksort(int r[],int s,int t) { int k=0; //用于标记分界点的位置,先假设定义第一个元素 if(s<t) { qkpass(r,s,t,k); //第一趟快速排序,将第k个元素定位,因为k是引用传递,所以返回k的最终位置 qksort(r,s,k-1); //将k的前面序列用同样的排序方法递归调用, qksort(r,k+1,t); //将k的后面序列用同样的排序方法递归调用, } } int main() { int a[10]; for(int i=0;i<10;i++) cin>>a[i]; qksort(a,0,9); for(int i=0;i<10;i++) cout<<a[i]<<" "; cout<<endl; return 0; }