【C語言編程入門筆記】排序算法之快速排序,一文輕鬆掌握快排!

排序算法一直是c語言重點,各個算法適應不用的環境,同時,在面試時,排序算法也是經常被問到的。今天我們介紹下快速排序,簡稱就是快排。

1.快速排序思想:

快排使用 分治法 (Divide and conquer)策略,將一個序列分爲兩個子序列。(快排算法中使用到了遞歸,對遞歸不太熟的,可以參考我前一篇文章)。具體步驟如下:

 從數列中挑出一個元素,稱爲"基準"(Pivot);

 重新排序數列,所有元素比基準小的擺放在最前面,所有元素比基準值大的放在基準的後面(相同的數可以放在任意一邊)。在這個分區結束之後,該基準就處於數列的中間位置。如上操作便稱爲"分區(Partition)"操作。

 遞歸的把小於基準值元素的子數列和大於基準值的子數列排序。

 

2.快速排序注意點:

遞歸的最底部情形,是數列的大小是0或1,也就是永遠都已經被排序好了。

雖然一直會遞歸,但是不用擔心,這個算法總會結束。畢竟在每次迭代中,至少會把一個元素擺到它最後的位置去。

 快排時間複雜度爲:O(nLog n);

 

3.快速排序代碼實現:

① 數據結構部分:

② 快速排序遞歸部分:

③尋找"基準"部分:

④ main函數調用:

如果你也想學計算機編程的話!

可以來我的C語言/C++編程學習基地,【點擊進入】

還有免費(零基礎教程,項目實戰教學視頻)!   

涉及:遊戲開發、課程設計、常用軟件開發、編程基礎知識、黑客等等...

和志同道合的小夥伴們一起學編程吧!

 

4.代碼實現結果:

每天進步一點點,每天消化一點點。如果你有更好的想法,歡迎一起交流。如果文章對你有所幫助,點個讚唄。