1、快速排序法
快速排序的最差时间复杂度和冒泡排序是一样的都是O(N2),
平均时间复杂度为O(NlogN)
void quickSort(int left,int right){
int i,j,t,temp;
if(left>right)
return;
temp=a[left]; //左边第一个作为基准
i=left; //i为左哨兵
j=right; //j为右哨兵
while(i!=j)
{
while(a[j]>temp&i<j) //先从右边遍历,直到找到小于temp时停下
j--;
while(a[i]<temp&i<j) //从左边遍历,直到找到大于temp时停下
i++;
if(i<j){ //两者都停下时,交换a[i]和a[j]的值
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
a[left]=a[i]; //当哨兵相遇时交换当前值和基准数
a[i]=temp;
quickSort(left,i-1);
quickSort(i+1,right)
}