08 資料結構與演算法 插入排序

2021-08-30 02:48:23 字數 671 閱讀 5980

"""

插入排序:

其思想類似於手中有一些亂序的撲克牌,要將其整理為有序的。

首先拿第二張,與之前一張對比,小於第一張時交換順序,大於時保持不動。

這樣i輪過後,第i大的牌就會出現在第i個位置。

"""import random

def insertion_sort(l):

#從下標1開始遍歷

for j in range(1,len(l)):

key = l[j]

#取前乙個元素的下標

i = j - 1

while i >= 0 and l[i] > key:

#判斷前乙個元素大於當前元素時

#當前元素指向上乙個元素

l[i+1] = l[i]

i = i - 1

#如果判斷成功,則上乙個元素指向當前元素,否則引用不變

l[i+1] = key

return l

def test_sort():

l = list(range(10))

l = random.shuffle(l)

assert insertion_sort(l) == l

if __name__ == "__main__":

test_sort()

資料結構與演算法 插入排序

將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料 插入排序分為兩種 直接插入排序和希爾排序 插入排序與打撲克時整理手上的牌非常類似。摸來的第1張牌無須整理,此後每次從桌上的牌 無序區 中摸最上面的1張並插入左手的牌 有序區 中正確的位置上。為了找到這個正確的位置,須自左向...

演算法與資料結構 插入排序

例如 給定乙個無序陣列int arr n代表集合陣列的長度,給出乙個演算法將陣列arr按照從小到大的順序進行排列。插入排序 看當前位置i的值是否比它前乙個數小,如果小就與前面的數交換位置。public static void insertionsort int arr,int n public st...

資料結構與演算法 插入排序

一 排序的相關概念 1 排序 將任意序列的資料元素,重新排列成按關鍵字有序 遞增有序或遞減有序 的序列過程。2 穩定性 若在排序過程中,序列的兩個關鍵字值相同的記錄,在排序結束後,相對位置不發生改變,則稱所用的排序方法為穩定的。3 排序方法的兩個效能指標 時間複雜度和空間複雜度。二 插入排序 1 基...