快排
题目:

思路:

代码实现:
#include<bits/stdc++.h> using namespace std; const int N = 1e6+10; int n; int q[N]; void quick_sort(int q[],int l,int r) { if(l>=r) return ; int x= q[l],i=l,j=r; while(i<j) { while(i<j&&q[j]>=x) //这里前面定义了x为q[i],故要从后面遍历,让后面的数值覆盖前面的q[i] { j--; } q[i]=q[j]; while(i<j&&q[i]<=x) { i++; } q[j]=q[i]; } q[i]=x; //这里不要忘记将开始的分界点放回数组中 quick_sort(q,l,i); quick_sort(q,j+1,r); } int main() { scanf("%d",&n); for(int i =0;i<n;i++) { scanf("%d",&q[i]); } quick_sort(q,0,n-1); for(int i = 0; i<n;i++) { printf("%d",q[i]); } }

浙公网安备 33010602011771号