快速排序:
http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/3491.html
#include <iostream> #include<bits/stdc++.h> using namespace std; int a[900000]; void quicksort(int l,int r) { if(l>r)return; int i = l; int j = r; int tmp = a[l]; while(i<j){ while(i<j&&a[j]>=tmp)j--; while(i<j&&a[i]<=tmp)i++; if(i<j)swap(a[i],a[j]); } swap(a[i],a[l]); quicksort(l,i-1); quicksort(i+1,r); } int main() { int n; while(cin>>n) { for(int i=1; i<=n; i++) { cin>>a[i]; } quicksort(1,n); int top = 1; for(int i=1; i<=n; i++) { if(top)top = 0; else cout<<" "; cout<<a[i]; } cout<<endl; } return 0; }
一趟快排:
#include <iostream> #include<bits/stdc++.h> using namespace std; int a[900000]; int top,n; void quicksort(int l,int r) { if(l>r)return; int i = l; int j = r; int tmp = a[l]; while(i<j){ while(i<j&&a[j]>=tmp)j--; a[i] = a[j]; while(i<j&&a[i]<=tmp)i++; a[j] = a[i]; //if(i<j)swap(a[i],a[j]); } // swap(a[i],a[l]); a[i] = tmp; // for(int i=1;i<=n;i++){ // cout<<a[i]<<" "; // } // cout<<endl; // quicksort(l,i-1); // quicksort(i+1,r); } bool cmp(int l,int r){ top++; if(top>=0){ for(int i=1;i<=n;i++){ cout<<a[i]<<" "; } cout<<endl; } // cout<<l<<" "<<r<<endl; return l<r; } int main() { // int n; while(cin>>n) { for(int i=1; i<=n; i++) { cin>>a[i]; } quicksort(1,n); // sort(a+1,a+1+n,cmp); int ttop = 1; for(int i=1; i<=n; i++) { if(ttop)ttop = 0; else cout<<" "; cout<<a[i]; } cout<<endl; } return 0; }