快速排序
Posted 给大佬递女装
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序相关的知识,希望对你有一定的参考价值。
#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; }
#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]; i= left; 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;}
以上是关于快速排序的主要内容,如果未能解决你的问题,请参考以下文章