引用部落格的介紹:快速排序
演算法思想:基於分治的思想,是氣泡排序的改進型。首先在陣列中選擇乙個基準點(該基準點的選取可能影響快速排序的效率,後面講解選取的方法),然後分別從陣列的兩端掃瞄陣列,設兩個指示標誌(low指向起始位置,high指向末尾),首先從後半部分開始,如果發現有元素比該基準點的值小,就交換low和high位置的值,然後從前半部分開始掃秒,發現有元素大於基準點的值,就交換low和high位置的值,如此往復迴圈,直到low>=high,然後把基準點的值放到high這個位置。一次排序就完成了。以後採用遞迴的方式分別對前半部分和後半部分排序,當前半部分和後半部分均有序時該陣列就自然有序了。
快速排序是一種高階排序(遞迴),速度快,效率高!
c++**如下
#include
using namespace std;
template<
class
t>
void
quicksort(t
*a,const int left,
const int right)
while
(i;swap
(a[left]
,a[j]);
//遞迴
quicksort
(a,left,j-1)
;quicksort
(a,j+
1,right);}
}int main()
;quicksort
(k,0,9
);for(int i=
0; i<
10; i++
) cout << k[i]
<< endl;
return0;
}
其他**:
十大排序演算法之快速排序
簡單排序 插入排序 選擇排序 氣泡排序 必學 分治排序 快速排序 歸併排序 必學 分配排序 桶排序 基數排序 樹狀排序 堆排序 必學 其他 計數排序 必學 希爾排序 原理 核心思想是通過乙個支點進行資料拆分,左邊的資料小於這個支點,右邊的資料大於支點,然後把左邊和右邊的做一次遞迴,直到遞迴結束。ph...
C 寫演算法之快速排序
快速排序是從氣泡排序演變而來,快速排序之所以快,是因為使用了分治法。同氣泡排序一樣,快速排序也屬於交換排序,通過元素之間的比較和交換位置來達到排序的目的。快速排序是在每一輪挑選乙個基準元素,並讓其他比它大的元素移動到數列的一邊,比它曉得元素移動到數列的另一邊,從而把數列拆解成兩個部分。在分治法的思想...
十大排序演算法之快速排序(QuickSort)
一 前言 資料結構與演算法,順便刷leetcode,無意間發現了乙個 我覺得講解的比較好的網頁,並且會拿leetcode裡面的題目當做例題,如有需要,奉上 五分鐘學演算法 二 演算法的介紹 選取兩個哨兵i,j哨兵i指向序列的最前端,哨兵j指向序列的最後端,選取乙個基準點。判斷哨兵i指向的元素是否大於...