python演算法 三 插入排序

2021-10-18 13:15:58 字數 1238 閱讀 5491

給出乙個亂序的數列,將這個數列按從小大到(從大到小)重新排列

插入排序的的邏輯是從選這個數列,乙個乙個的插入一到乙個新的數列中

如下:初始數列: 5 1 3 7 9 6 4 2

第乙個數插入空的數列

5第二個數 1 < 5

插入5所在的位置

新的數列變成:

1 5第三個數3

3>1 往後找

3 < 5 插入當前位置 , 新的數列變成

1 3 5

第四個數7

7>1 往後

7>3往後

7>5往後

因為5是最後乙個數了,所以插在最後,新的數列變成

1 3 5 7

以此類推.將所有的數都插入新的數列即可

# 建立:2021/1/23 7:47 下午

# 格言:給自己的生活增加乙份向上的力,每都進步一點點

from random import shuffle

"""插入排序"""

# 將目標陣列中的元素按從小到大的順序進行重排.

definsertion_sort

(num_list:

list):

result =

[numlist[0]

]for i in

range(1

,len

(num_list)):

for j in

range

(len

(result)):

# 如果要排的數比當前迴圈到的數要小

# 如果比當前迴圈到的數要到,就繼續迴圈直到最後

if num_list[i]

< result[j]

:# 找到比當前要插入的元素大的位置,插入該位置

result.insert(j, num_list[i]

)break

# 如果查詢到最後都沒有找到比當前元素大的數,則插入新數列的末尾

if j ==

len(result)-1

:)return result

# 示例

num_list_demo =

[x for x in

range

(100)]

shuffle(num_list_demo)

print

(num_list_demo)

res = insertion_sort(num_list_demo)

print

(res)

python排序演算法實現 (三)插入排序

插入排序 英語 insertion sort 是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。從第二個位置,即下標為1的元素開...

排序演算法(三)插入排序

今天來更新排序演算法中的第三種演算法 插入排序插入排序是基於比較的排序。所謂的基於比較,就是通過比較陣列中的元素,看誰大誰小,根據結果來調整元素的位置 因此,對於這類排序,就有兩種基本的操作 比較操作 交換操作其中,對於交換操作,可以優化成移動操作,即不直接進行兩個元素的交換,還是用乙個樞軸元素 t...

排序演算法(三) 插入排序

一 直接插入排序 最差時間複雜度 o n 2 最優時間複雜度 o n 平均時間複雜度 o n 2 穩定性 穩定 直接插入排序 insertion sort 是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對未排序的資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序演算法的一般...