當前位置:
首頁 > 知識 > c語言排序演算法之快速排序,輕鬆掌握快排

c語言排序演算法之快速排序,輕鬆掌握快排

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

1.快速排序思想:

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

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

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

想要一起學習C++的可以加裙六二六八七一九一六,裙內有各種資料滿足大家,歡迎加裙

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

2.快速排序注意點:

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

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

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

3.快速排序代碼實現:

數據結構部分:

快速排序遞歸部分:

尋找"基準"部分:

main函數調用:

4.代碼實現結果:

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

想要一起學習C++的可以加裙六二六八七一九一六,裙內有各種資料滿足大家,歡迎加裙


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 C加加 的精彩文章:

C語言編程,首先你得懂這些!虛擬機及配置環境篇
C語言編程——模擬系統刪除文件
c語言演算法之遞歸,遞歸其實很簡單
C語言中史上最愚蠢的BUG
C語言C加加網路編程總結

TAG:C加加 |

您可能感興趣

C語言編程基礎入門學習排序演算法之快速排序,輕鬆掌握快排
排序演算法 冒泡排序
演算法——分治和快速排序
演算法——選擇排序
C語言編程基礎入門經典排序演算法——冒泡排序法
什麼是插入排序演算法?
十大經典排序演算法
「演算法」什麼是桶排序
排序演算法總結
漫畫:什麼是快速排序?
五帝錢正確的排列順序 具體排序位置整理
前端排序演算法總結
動畫+原理+代碼,解讀十大經典排序演算法
除了冒泡排序,你知道Python內建的排序演算法嗎?
《戰神》總監給系列遊戲排序,重啟之作排第二
快速排序和它在工程實踐中的應用
15 種排序演算法可視化展示
寫完這個排序演算法,老闆就叫我滾蛋…
五種排序演算法python語言實現
錄取概率和梯度排序才是志願填報的最後一步!科學預測、合理排序!