給出乙個亂序的數列,將這個數列按從小大到(從大到小)重新排列
插入排序的的邏輯是從選這個數列,乙個乙個的插入一到乙個新的數列中
如下:初始數列: 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)
(num_list_demo)
res = insertion_sort(num_list_demo)
(res)
python排序演算法實現 (三)插入排序
插入排序 英語 insertion sort 是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。從第二個位置,即下標為1的元素開...
排序演算法(三)插入排序
今天來更新排序演算法中的第三種演算法 插入排序插入排序是基於比較的排序。所謂的基於比較,就是通過比較陣列中的元素,看誰大誰小,根據結果來調整元素的位置 因此,對於這類排序,就有兩種基本的操作 比較操作 交換操作其中,對於交換操作,可以優化成移動操作,即不直接進行兩個元素的交換,還是用乙個樞軸元素 t...
排序演算法(三) 插入排序
一 直接插入排序 最差時間複雜度 o n 2 最優時間複雜度 o n 平均時間複雜度 o n 2 穩定性 穩定 直接插入排序 insertion sort 是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對未排序的資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序演算法的一般...