1. 程式人生 > >資料結構與演算法(二)--遞迴

資料結構與演算法(二)--遞迴

遞迴條件:

1.遞迴條件:每次調自己,然後記錄當時的狀態
2.基準條件:執行到什麼時候結束遞迴,不然遞迴就會無休止的呼叫自己,

遞迴的資料結構:棧(先進先出)和彈夾原理一樣,每一次呼叫自己都記錄了當時的一種狀態,然後把這種狀態的結果返回。

棧相對應的資料結構:佇列(先進後出)。生產者消費者模式就用到了佇列的演算法。

選擇排序

###原理:選擇排序:寫個函式:每次把最小的拿出來,放到一個新的列表裡面,每次都執行這個函式,到最後執行完,就排好序了,中心思想就是遞迴演算法。每次都呼叫這個
函式去查詢最小的那個數

大(o)

選擇排序的速度是:O(n^2),
1.選擇第一個數,和全列表比較,選出個最小的,運行了n次,把這個最小的放到新的list裡面,原list刪除這個元素,
2.選擇剩下的第1個數,和全列表比較,選出最小的,運行了n-1次,把這個最小的放到新的list裡面,原list刪除這個元素,
。。。 。。。
。。。(遞迴思想,每次都執行一次)
n, 選擇第n個數,和全列比較,選出最小的(就是這個n),運行了1次,把這個n放到新的list裡面
所以執行的次數:為n*1/2n ==n^2(大(o)計算方法把常數項去掉)
所以選擇排序的執行次數為O(n^2)

遞迴的結束條件就是最後一個數據

程式碼如下: