#include <iostream>
using namespace std;
const int SIZE=50;
void sort(int arr[],int l,int r);
int main()
{
int arr[SIZE],i,no;
cin>>no;
for (i=0;i<no;i++)
cin>>arr[i];
sort(arr,0,no-1);
for (i=0;i<no;i++)
cout<<arr[i]<<" ";
cout<<endl;
return 0;
}
void sort(int arr[],int l,int r)
{
if(l<r)
{
int i=l,j=r,x=arr[l];
while(i<j)
{
while(i<j && arr[j]>=x)
j--;
if(i<j)
arr[i++]=arr[j];
while(i<j && arr[i]<x)
i++;
if(i<j)
arr[j--]=arr[i];
}
arr[i]=x;
sort(arr,l,i-1);
sort(arr,i+1,r);
}
}
#include <algorithm>
using std::swap;
void sort(int* a, int n)
{
if(n<=1) return;
if(n==2){
if(a[1]<a[0]) swap(a[1],a[0]);
return;
}
swap(a[n/2],a[0]);
int jie=a[0];
int* L=a+1;
int* R=a+n-1;
while(L<R){
while(L<R&&*L<jie) ++L;
while(a<R&&!(*R<jie)) --R;
if(L<R) swap(*L,*R);
}
if(*R<jie) swap(*R,a[0]);
sort(a, R-a);
sort(R+1,n-1-(R-a));
}
#include <iostream>
using namespace std;
#include <ctime>
void sort(int* a, int n);
int main()
{
const int N=10240;
int a[N];
for(int i=0; i<N; i++)
a[i] = N-i;
for(int i=0; i<10; i++)
cout << a[i] << ' ';
cout << endl;
clock_t t1 = clock();
sort(a,N);
clock_t t2 = clock();
cout << double(t2-t1)/CLOCKS_PER_SEC << endl;
for(int i=0; i<10; i++)
cout << a[i] << ' ';
cout << endl;
}
引用v_JULY_v的博客:
快速排序算法:http://blog.csdn.net/v_july_v/article/details/6116297
快速排序算法的深入分析:http://blog.csdn.net/v_JULY_v/article/details/6211155
快速排序算法之所有版本的c/c++实现:http://blog.csdn.net/v_JULY_v/article/details/6262915