用C++的各位,用sort应该很顺手了,它很方便。
特别是自己可以写个comp函数,排结构体这种类型的时候,就更方便了。
快排是必备的算法,自己写出来,才能更明白。
基本思想:选取枢轴,将一个完整序列分为左右两部分,通过一趟排序使得左子序列的值都小于右子序列的值。
再分别将左子序列和右子序列划分为左右两部分,分别进行排序。
具体做法:两个指针i,j,初始值为l,r。枢轴为mid。j从当前位置开始往前找第一个小于mid的记录,i从当前位置往后找第一个大于mid的记录,将两个值交换。重复该过程,指导i>j。
#includeusing namespace std;void qsort(int,int);int a[100005];int main(){ //基本的输入和输出 int n,i; cin>>n; for(i=1;i<=n;i++) cin>>a[i]; qsort(1,n); for(i=1;i<=n;i++) cout< <<" "; return 0;}void qsort(int l,int r){ int i,j,mid,tmp; i=l; j=r; mid=a[(l+r)/2];//mid枢轴设为当前序列中间位置的值 do{ while(a[i] mid) j--;//在右子序列找比mid小的记录 if(i<=j){ //找到了两个需要交换的记录,交换 tmp=a[i]; a[i]=a[j]; a[j]=tmp; i++;//i继续向后找 j--;//j继续向前找 } }while(i<=j); if(l