資料結構與演算法(二)--遞迴
阿新 • • 發佈:2018-11-02
遞迴條件:
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)
遞迴的結束條件就是最後一個數據
程式碼如下: