1 快速排序是冒泡排序的一种算法
2 选定一个基数(一般是第一个元素),经过一趟排序,将数据分为两部分,其中一部分数据比另外一部分数据都要小。数组
3再分别对两部分数据施以一样的算法进行分割(可用递归进行)。最终获得有序数据优化
代码以下排序
void qsort(int a[],int low,int high)
{
if(low >= high)
{
return;
}
int first = low;
int last = high;
int key = a[first];
//经过下面这个循环,将数组分红了3部分。
//low->(first-1) 所有小于key
//first 等于key
//(first+1)->high 所有大于key
while (first < last)
{
while (first < last && a[last] >= key)
{
last--;
}
/*
a[first]是第一个空位
从右边开始,将第一个比key小的数a[last]存放到左边的空位
同时a[last]成为下一个空位
*/
a[first] = a[last];
while (first < last && a[first] <= key)
{
first++;
}
/*
从左边开始,将第一个比key大的数a[first]存放到右边的空位
同时a[first]成为下一个空位
*/
a[last] = a[first];
}
a[first] = key;
//递归继续对左右两边进行排序
qsort(a,low,first-1);
qsort(a,first+1,high);
}递归
4 快速排序的优化。能够经过选着一个合理中值来避免最坏状况发生ast