最简单的快速排序
#include<bits/stdc++.h> using namespace std;
void qsort(int a[],int z_xiao,int z_da) ?//快速排序? {?? ?
?? ?int i=z_xiao,j=z_da; ?//最大和最小值? ?? ?int ji_ding=a[(z_xiao+z_da)/2]; ?? ?while(i<=j) ?? ?? ??? ??? ??? ? ? ?? ??? ??? ??? ? ?? ?{?? ??? ??? ??? ? ?? ??? ?while(a[i]<ji_ding) i++;?? ??? ? ?? ? ?? ??? ?while(a[j]>ji_ding) j--; //找2个点? ?? ??? ? ?? ?if(i<=j) {swap(a[i],a[j]) ;?? ?i++,j--;} ?//交换位置? ?? ?} ? ?? ?if(z_xiao<j) ??? ?qsort(a,z_xiao,j); //进行排序操作? ?? ?if(i<z_da) ??? ?qsort(a,i,z_da); ?//如果最小的 大于最大的? }
int main() { ?? ?int a,b[1000]; ?? ?cin>>a; ?? ?for(int i=0;i<a;i++)? ?? ?{ ?? ?cin>>b[i]; ?? ??? ? ?? ?}//输入? ? ?qsort(b,0,a-1); //排序? ?? ?for(int i=0;i<a;i++) ?? ?{ ?? ?cout<<b[i]<<endl;? ?? ??? ? ?? ?}//输出? ?? ?
?? ?return 0; ?}?
输出结果: ? ?
?
|