快速排序
#include<stdio.h>
unsigned long long arr[200001];
void sorti( unsigned long long *p , int left ,int right );
int main (){
int i,n ;
scanf ("%d",&n);
for ( i = 0 ; i < n ;i ++)
scanf ("%llu",&arr[i]);
sorti(arr,0,n-1);
for ( i = 0 ; i < n ;i ++)
printf ("%llu ",arr[i]);
return 0;
}
void sorti( unsigned long long *p , int left ,int right ){//从left到right 分成两拨
if (left>right)
return ;
int i = left ;
int j = right ;
int key = p[left];
while (i<j){
while (p[j]>key &&i<j )
j--;
p[i] = p[j] ;
while ( p[i]<key &&i<j)
i++;
p[j] = p[i] ;
}
p[i] = key ;
sorti (p,left,i-1);
sorti (p,i+1,right);
}