左神算法和數(shù)據(jù)結(jié)構(gòu)新手班
算法思想:
?
直接插入排序的核心思想就是:將數(shù)組(已報名左程云算法數(shù)據(jù)結(jié)構(gòu)底部評)中的所有元素依次跟前面已經(jīng)排好的元素相比較,如果選擇的元素比已排序的元素小,則交換,直到全部元素都比較過。
因此,從上面的描述中我們可以發(fā)現(xiàn),直接插入排序可以用兩個循環(huán)完成:
第一層循環(huán):遍歷待比較的所有數(shù)組元素
第二層循環(huán):將本輪選擇的元素(selected)與已經(jīng)排好序的元素(ordered)相比較。
如果:selected > ordered,那么將二者交換
代碼實現(xiàn)
#直接插入排序def insert_sort(L):
? ?#遍歷數(shù)組中的所有元素,其中0號索引元素默認已排序,因此從1開始
? ?for x in range(1,len(L)): ? ?#將該元素與已排序好的前序數(shù)組依次比較,如果該元素小,則交換
? ?#range(x-1,-1,-1):從x-1倒序循環(huán)到0
? ? ? ?for i in range(x-1,-1,-1): ? ?#判斷:如果符合條件則交換
? ? ? ? ? ?if L[i] > L[i+1]:
? ? ? ? ? ? ? ?temp = L[i+1]
? ? ? ? ? ? ? ?L[i+1] = L[i]
? ? ? ? ? ? ? ?L[i] = temp
標簽: