氣泡排序的執行效率太低,因為每次比較相鄰的兩個數,所以時間複雜度為o(n²),花費的時間太長,所以為了更加的節省時間,提高程式的執行速率,我們可以採用快速排序。對於乙個數集,先把第乙個數當作基準數,然後分別從最右端和最左端向另一方向進行搜尋,(以從小到大的順序為例)從右向左搜尋的,遇到比基準數小的與從左向右搜尋的比基準數大的進行交換,直到兩端進行查詢的到達同一位置時將此處的數和基準數進行交換位置,其次從這個位置上,把這個數集分為兩個部分再次進行這樣的排序。其過程如下:
其**如下:
#include
using
namespace std;
int a[
101]
;void
quicksort
(int left,
int right)
} a[left]
= a[i]
; a[i]
= temp;
quicksort
(left, i -1)
;quicksort
(i +
1, right)
;return;}
intmain()
快速排序演算法實現C C
對於包含n個數的輸入陣列來說,快速排序是一種最壞情況時間複雜度為o n 2 的排序演算法。雖然最壞情況時間複雜度很差,但是快速排序通常是實際排序應用中最好的選擇,因為它的平均效能非常好 它的期望時間複雜度是o nlgn 而且o nlgn 中隱含的常數因子非常小,另外他還能夠進行原址排序,甚至在虛擬環...
快速排序 C C
快排演算法 快排和冒泡都是基於交換的思想,但是進行了改進,更為高效。流程 1 首先設定乙個分界值,通過分界值將陣列分成左右兩部分。2 將大於或等於分界值的資料集中到陣列右邊,小於分界值的資料集中到陣列的左邊。3 左右兩個部分重複上述排序。從上述流程可以看出,這就是乙個遞迴的過程,遞迴終止即只有乙個元...
C C 七大排序演算法 快速排序
接上面的故事未完待續,除了歸併長老外,還有另外一位快速長老的快速 也是被小小桂子讚不絕口,大呼奇妙 這位快速長老的演算法思想時這樣的 1 每次選取第乙個數為基準 2 然後使用 乾坤大挪移 將大於和小於基準的元素分別放置於基準數兩邊 3 繼續分別對基準數兩側末端未排序的資料使用分治法進行細分處理,直至...