Python中使用插入排序算法的簡單分析與代碼示例
問題描述
將一組隨機排列的數(shù)字重新按照從小到大的順序排列。
插入算法
每次從數(shù)組中取一個數(shù)字,與現(xiàn)有數(shù)字比較并插入適當位置。
如此重復,每次均可以保持現(xiàn)有數(shù)字按照順序排列,直到數(shù)字取完,即排序成功。
這很像打牌時的抓牌情況,
第一個條件:保持手上的牌的順序是正確的
第二個條件:每次抓到新的牌均按照順序插入手上的牌中間。
保證這兩條不變,那么無論抓了幾張牌,最后手上的牌都是依照順序排列的。
Python 實現(xiàn):
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
相關文章
快速上手基于Anaconda搭建Django環(huán)境的教程
Django具有完整的封裝,開發(fā)者可以高效率的開發(fā)項目,Django將大部分的功能進行了封裝,開發(fā)者只需要調(diào)用即可,接下來通過本文給大家介紹基于Anaconda搭建Django環(huán)境的教程,需要的朋友可以參考下2021-10-10Python 內(nèi)置變量和函數(shù)的查看及說明介紹
今天小編就為大家分享一篇Python 內(nèi)置變量和函數(shù)的查看及說明介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12詳解向scrapy中的spider傳遞參數(shù)的幾種方法(2種)
這篇文章主要介紹了詳解向scrapy中的spider傳遞參數(shù)的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09Python深度學習pytorch神經(jīng)網(wǎng)絡多輸入多輸出通道
這篇文章主要為大家介紹了Python深度學習中pytorch神經(jīng)網(wǎng)絡多輸入多輸出通道的詳解有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-10-10修復python-memcached在python3.8環(huán)境中報SyntaxWarning的問題(完美解決)
我們一直使用python-memcached庫來操作memcached,最近發(fā)現(xiàn)在python3.8的環(huán)境中,代碼會報錯,下面通過本文給大家講解修復python-memcached在python3.8環(huán)境中報SyntaxWarning的問題及解決方法,需要的朋友可以參考下2022-08-08Python自動化導出zabbix數(shù)據(jù)并發(fā)郵件腳本
這篇文章主要介紹了Python自動化導出zabbix數(shù)據(jù)并發(fā)郵件腳本,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08Python爬蟲Scrapy框架CrawlSpider原理及使用案例
這篇文章主要介紹了Python爬蟲Scrapy框架(CrawlSpider),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-11-11