插入排序(python實現)

插入排序,和選擇排序很像,簡單的說就是和選擇排序的順序反一下,也是把列表看作兩部分,前面是排好序的,後面是無序的,遍歷這個列表,依次把數字往前面有序的那部分放,放進去的時候,再和前面的排序好的數字的最後一位開始比,如果大了,就交換位置,再繼續和前面的比,放到合適的位置。如此循環,把每個數字都放到該放的位置上。選擇排序就是在後面無序的裏面選好最小的,往前面依次放。插入排序就是依次去後面無序的,放到前面的時候,找到自己的位置。
第一種方法

def insert_sort(list):
	n = len(list)
	for i in range(1,n):  # 從第二個元素開始取
		for j in range(i,0,-1):  # 遍歷前面的有序的,從有序的最後一個開始比,依次往前比,把後面依次取的數字放到該放的位置上
			if list[j] < llist[j-1]:  # 如果比前面的小,則交換位置
					list[j], list[j-1] = list[j-1], list[j] 

插入排序的最壞時間複雜度爲O(n^2),最優的話,我們來看下下面
第二種方法

def insert_sort(list):
	n = len(list)
	for i in range(1,n) :
		while i > 0:
			if list[i]	< list[i-1]:
				list[i], list[i-1] = list[i-1], list[i]
				i -= 1
			else:
				break  # 如果是有序的話,就退出while,這樣最好時間複雜度就是O(n)了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章