快速排序核心思想:
找到一个标记,将比它大的放在右边,比它小的放在左边;多次重复即可排序
#include <iostream>
using namespace std ;
int a[100010];
void quickSort ( int *a , int l , int r ) {
if ( l>=r ) return ;
int pivot = a[ (l+r)>>1 ];
int x = l-1, y = r+1 ;
while ( x<y ){
while( a[ ++x ] < pivot );
while( a[ --y ] > pivot );
if ( x<y ) swap( a[x] , a[y] );
}
quickSort( a , l , y );
quickSort( a , y+1 , r );
}
int main ( ) {
int n ;cin >> n ;
for ( int i = 1 ; i <= n ; i++ ) cin >> a[i];
quickSort(a,1,n);
for ( int i = 1 ; i <= n ; i++ ) cout << a[i] << " " ;
return 0 ;
}