QuickSort
#include <stdio.h>
#include <stdlib.h>
int A_arr[5]={2,5,1,3,4};
int Partition(int A[],int p,int r) //分区间,返回区间点
{
int x=A[r-1];
int i,j,temp;
i=p-1;
for(j=p;j<r-1;j++)
{
if(A[j]<x)
{
++i;
temp=A[i];
A[i]=A[j];
A[j]=temp;
}
}
temp=A[i+1];
A[i+1]=A[r-1];
A[r-1]=temp;
return i+1;
}
void QuickSort(int A[],int p,int r)
{
int q;
if (p<r)
{
q=Partition(A,p,r);
QuickSort(A,p,q);
QuickSort(A,q+1,r);
}
}
int main()
{
int i;
QuickSort(A_arr,0,5);
for(i=0;i<5;i++)
printf("%d",A_arr[i]);
printf("Hello world!\n");
return 0;
}
快速排序在worst case 下运行时间O(n^2),即输入序列倒序时候(我们输出是顺序从小到大),在最好和平均时间下是O(nlog(n)),空间复杂度是O(n)