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