當前位置:
首頁 > 最新 > C語言編程基礎入門學習排序演算法之快速排序,輕鬆掌握快排

C語言編程基礎入門學習排序演算法之快速排序,輕鬆掌握快排

C語言是面向過程的,而C++是面向對象的

C和C++的區別:

C是一個結構化語言,它的重點在於演算法和數據結構。C程序的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。

C++,首要考慮的是如何構造一個對象模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取對象的狀態信息得到輸出或實現過程(事務)控制。 所以C與C++的最大區別在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為「 設計這個概念已經被融入到C++之中 」。

C與C++的最大區別:在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為「 設計這個概念已經被融入到C++之中 」,而就語言本身而言,在C中更多的是演算法的概念。那麼是不是C就不重要了,錯!演算法是程序設計的基礎,好的設計如果沒有好的演算法,一樣不行。而且,「C加上好的設計」也能寫出非常好的東西。

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

1.快速排序思想:

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

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

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

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

2.快速排序注意點:

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

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

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

3.快速排序代碼實現:

數據結構部分:

小編推薦一個學C語言/C++的學習裙【 二六三,六八八,二七六 】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多乾貨和技術資料分享!

快速排序遞歸部分:

尋找"基準"部分:

小編推薦一個學C語言/C++的學習裙【 二六三,六八八,二七六 】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多乾貨和技術資料分享!

main函數調用:

4.代碼實現結果:

小編推薦一個學C語言/C++的學習裙【 二六三,六八八,二七六 】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多乾貨和技術資料分享!

這些是C/C++能做的

伺服器開發工程師、人工智慧、雲計算工程師、信息安全(黑客反黑客)、大數據 、數據平台、嵌入式工程師、流媒體伺服器、數據控解、圖像處理、音頻視頻開發工程師、遊戲伺服器、分散式系統、遊戲輔助等

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


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

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

TAG: |