Python中使用插入排序演算法的簡單分析與程式碼範例

來源:互聯網
上載者:User
問題描述

將一組隨機排列的數字重新按照從小到大的順序排列。

插入演算法

每次從數組中取一個數字,與現有數字比較並插入適當位置。

如此重複,每次均可以保持現有數字按照順序排列,直到數字取完,即排序成功。

這很像打牌時的抓牌情況,

第一個條件:保持手上的牌的順序是正確的
第二個條件:每次抓到新的牌均按照順序插入手上的牌中間。
保證這兩條不變,那麼無論抓了幾張牌,最後手上的牌都是依照順序排列的。

Python 實現:

def insertion_sort(n): if len(n) == 1:  return n b = insertion_sort(n[1:]) m = len(b) for i in range(m):  if n[0] <= b[i]:   return b[:i]+[n[0]]+b[i:] return b + [n[0]]


另一個版本:

def insertion_sort(lst): if len(lst) == 1:  return lst for i in xrange(1, len(lst)):  temp = lst[i]  j = i - 1  while j >= 0 and temp < lst[j]:   lst[j + 1] = lst[j]   j -= 1  lst[j + 1] = temp return lst
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.