快速排序是最快的通用内部排序算法,比归并排序(nlogn)速度更快,虽然复杂度都是nlogn,而且归并排序需要n的辅助空间,快速排序不需要。。。快速排序的实现也是分治。。。就是前面一个指针,后面一个指针。。。
手敲快排:
void qsort(int s[],int left,int right)
{
if(left < right)
{
//swap(s[left],s[(left+right)/2]);
int i = left,j = right,x = s[left];
while(i<j)
{
while(i<j && s[j] >= x)
j--;
if(i<j)
s[i++] = s[j];
while(i<j && s[i] <= x)
i++;
if(i<j)
s[j--] = s[i];
}
s[i] = x;
qsort(s,left,i-1);
qsort(s,i+1,right);
}
return ;
}
那个交换加上无非就是中间参照物的问题,改变的是快排的实际复杂度。。。