遞迴與排序演算法

2021-09-24 08:10:48 字數 1322 閱讀 9412

程式=資料結構+演算法

遞迴是一種應用非常廣泛的演算法。很多資料結構和演算法的編碼實現都要用到遞迴。

排序演算法最經典最常用的冒泡插入選擇,時間複雜度都為o(

乙個問題的解可以分解為幾個子問題的解

這個問題與分解之後的子問題,除了資料規模不同,求解思路完全一樣

存在遞迴終止條件

分成遞和歸來看,我覺得和多重迴圈類似,就是一層套一層的,只不過是每一層都完成自己的工作,遞給下一層就等待歸。

也就是遞推式+終止條件=遞迴演算法

寫遞迴**的關鍵就是找到如何將大問題分解為小問題的規律,並且基於此寫出遞推公式,然後再推敲終止條件,最後將遞推公式和終止條件翻譯成**。

函式呼叫會使用棧來儲存臨時變數,每呼叫乙個函式,都會將臨時變數封裝為棧幀壓入記憶體棧,等函式執行完成返回時,才出棧。

系統棧或者虛擬機器棧空間一般都不大。如果遞迴求解的資料規模很大,呼叫層次很深,一直壓入棧,就會有堆疊溢位的風險。

遞迴之中常會出現重複計算的問題,可以通過雜湊表雜湊來解決問題。

排序演算法

最好情況

最壞情況

平均情況

冒泡o(

o(o(

插入o(

o(o(

選擇o(

o(o(

實際的軟體開發中,我們排序的可能是 10 個、100 個、1000 個這樣規模很小的資料,所以,在對同一階時間複雜度的排序演算法效能對比的時候,我們就要把係數、常數、低階也考慮進來

基於比較的排序演算法的執行過程,會涉及兩種操作,一種是元素比較大小,另一種是元素交換或移動。

原地排序將空間複雜度為o(1)的演算法稱為原地排序演算法

經過某種排序演算法排序之後,如果相同的元素排序前後順序沒有改變,那我們就把這種排序演算法叫作穩定的排序演算法;如果前後順序發生變化,那對應的排序演算法就叫作不穩定的排序演算法。

氣泡排序的具體過程還講個錘子

具體過程還講個錘子

選擇排序每次會從未排序區間中找到最小的元素,將其放到已排序區間的末尾。

to be continued

2023年3月7日 19點59分

遞迴與排序演算法

自己呼叫自己呼叫方法時傳入不同的引數,使 更加簡潔 遞迴的呼叫機制 遞迴可以解決的問題 分類 內部排序 使用記憶體進行排序 外部排序 使用外部儲存排序 內部排序分類 插入排序 交換排序 選擇排序 歸併排序 基數排序 演算法規則 遍歷陣列如果遇到逆序則進行資料交換 public class bubbl...

遞迴排序演算法

1 歸併排序 歸併排序用的是分治法,即將要排序的陣列分而治之。如圖所示 簡單的 如下 public class merge publicvoid mergearray inta,int first,intmid,int last while i m while j n for i 0 i k i 將...

遞迴排序演算法

遞迴呼叫是用相同的方法去解決更小的問題,直到問題規模小於或等於某個邊界條件時,不再進行遞迴 遞迴的出口 而是直接處理,然後不斷向下執行函式返回結果。1.當問題小到一定規模時,可以直接求解 2.當問題規模較大時,可以分解為若干個相互獨立的子問題,這些子問題與原問題具有相同的特徵。若不能直接解決,則可分...