python 插入排序

2021-07-04 04:20:13 字數 969 閱讀 3418

# -*-coding:utf-8

def insertsort(list):

# list = [4,1,9,13,34,26,10,7,4]

m = len(list) # 元素個數

for i in range(m): # 對每乙個元素

min = i # 當前元素索引

for j in range(i+1,m): # 遍歷後面的所有元素,尋找最小的值

if list[min] > list[j]: # 如果後面出現比當前值小的元素

min = j #

# 當前元素與在其後面的最小元素交換位置

print "----------------------"

print "比較元素: ",list[i]

print "交換元素: ",list[min]

tmp = list[i]

list[i] = list[min]

list[min] = tmp

print list

return list

if __name__== '__main__':

list_0 = [4,1,9,13,34,26,10,7,4]

list_1 = insertsort(list_0)

print list_1

演算法效能:

1. 待排序的元素個數是n,該演算法執行n-1次插入,每次只需乙個輔助空間作為元素交換使用;

2. 最好的情況:排序前記錄已經按關鍵碼大小有序排列,每趟只需與前面的有序物件序列的最後乙個關鍵碼比較一次,無需移動,總的比較次數n-1;

3. 最壞的情況:第i趟時與前面i-1個關鍵字比較,並且前面i-1個關鍵字共移動i-1次,加上第i個關鍵字複製到輔助交換空間,再從輔助空間到有序表的2次移動,一共是i+1;

4. 演算法的時間複雜度是o(n**2),空間複雜度是o(1)。

Python 插入排序

本博文示例為自己指定一定範圍,生成指定個數的隨機數,再對生成的隨機數進行排序,並記錄排序所花時間。生成指定範圍 指定個數隨機數 import random def generate point range gene size,min val,max val num list i 0 while i ...

Python 插入排序

把第乙個數固定,然後將其它數插入,小的放前面。備份這個後續插入的數,然後將這個數和前面的數作比較,比前面的數小,就將前面的數後移。這樣相當於前面的數就挪出乙個空,如果再往前沒有比它小的了,就把開始備份好的數填進去。插入排序,穩定,平均和複雜都是o n2 o n 2 def insert sort l...

python 插入排序

時間複雜度為o n 2 基本思想就是將無序序列插入到有序序列中。例如要將陣列arr 4,2,8,0,5,1 排序,可以將4看做是乙個有序序列 圖中用藍色標出 將 2,8,0,5,1 看做乙個無序序列。無序序列中2比4小,於是將2插入到4的左邊,此時有序序列變成了 2,4 無序序列變成了 8,0,5,...