python之插入排序
阿新 • • 發佈:2017-11-27
每次 http 技術分享 and 組元 pri art 取出 for
插入排序原理:它的工作原理是通過構建有序序列,對於未排序數據,在已排序序列中從後向前掃描,找到相應位置並插入。
插入排序核心:假設第一個元素排好,之後的元素對排好的部分從後向前比較並逐一移動。
實現技巧:
講一組數據分成兩組,我分別將其稱為有序組與待插入組。每次從待插入組中取出一個元素,與有序組的元素進行比較,並找到合適的位置,將該元素插到有序組當中。就這樣,每次插入一個元素,有序組增加,待插入組減少。直到待插入組元素個數為0。當然,插入過程中涉及到了元素的移動。
為了排序方便,我們一般將數據第一個元素視為有序組,其他均為待插入組。
下面以升序為例進行一次圖解:
Python代碼:
#coding=utf-8 ‘‘‘ 選擇排序: 思想:插入排序原理很簡單,講一組數據分成兩組,我分別將其稱為有序組與待插入組。 每次從待插入組中取出一個元素,與有序組的元素進行比較,並找到合適的位置, 將該元素插到有序組當中。就這樣,每次插入一個元素,有序組增加,待插入組減少。 直到待插入組元素個數為0。當然,插入過程中涉及到了元素的移動。 實現技巧:為了排序方便,我們一般將數據第一個元素視為有序組,其他均為待插入組。 參考博客:http://blog.csdn.net/llzk_/article/details/51628574 ‘‘‘ def insertionsort( list ): i=1 # 待插入元素下標 j=0 # 排好序的最後一個元素 temp=0 # 中間變量用來存儲取出待排序元素的值 for i in range(len(list)): j=i-1 temp = list[i] while(j>=0 and temp<list[j]): list[j+1] = list[j] j = j-1 else: list[j+1]=temp return list list= [2,1,4,2,4,2,4,2,1,4,3,5,1] print "排序前數組序列" print "----------------------------------------" print list insertionsort(list) print "排序後" print list
執行結果:
python之插入排序