快速排序

#include<iostream>
#include<algorithm>
#include<map>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<string>
#include<cstdio>
#include<cstring>
#include<cctype>
#include<cmath>
using namespace std;
int n, a[55];
int i ,j , t;
void quicksort(int left,int right){
    t= 0;
    if(left >= right)
       return;                 //若左标与右标相等,退出本轮;
    t= a[left];                //设置标的为t,并初始化
    i= left;                  //设i,j为左右开始的游标
    j= right;
    while(i<j){
while( a[j]>= t&&i<j ){ j--;                //从右开始,直到找到一个数比标的小,结束 } if(i < j) a[i++] = a[j]; while( a[i]< t&& i<j){ i++; } if(i<j){ a[j--] = a[i]; } } a[i] = t; quicksort(left,i-1);        //分治思想 quicksort(i+1,right); } int main() { cin>>n; for(i = 1; i<=n; i++ ){ cin>>a[i]; } quicksort(1, n) ; for( i= 1; i<=n; i++ ){ cout<<a[i]; } cout<<endl; }
原文地址:https://www.cnblogs.com/upstart/p/6071624.html