插入排序 希爾插入排序

2021-09-28 01:43:57 字數 1213 閱讀 6014

本文借鑑於lsgo實驗室創始人馬老師

演算法:

:"""希爾插入排序"""

delta =

len(nums)//2

while delta >0:

shell(delta,nums)

delta = delta//

2return nums

defshell

(delta, key)

:for i in

range

(delta,

len(key)):

j = i - delta

current = key[i]

while j >=

0and key[j]

>current:

key[j+delta]

= key[j]

j = j - delta

key[j+delta]

= current

def

straightinsertsort

(nums)

:"""直接插入排序"""

for i in

range(1

,len

(nums)):

j = i -

1 current = nums[j]

while j >=

0and nums[j]

> current:

nums[j+1]

= nums[j]

j = j -

1 nums[j+1]

= current

return nums

穩定排序如果碰見乙個元素和插入元素相等,那麼演算法將程式放在相等元素的後面;

插入排序 折半插入排序 希爾排序

1 排序演算法的穩定性 穩定的 關鍵字相同的元素在排序後相對位置不變 不穩定的 關鍵字相同的元素在排序後相對位置改變 2 排序演算法分類 內部排序,外部排序。1 演算法思想 每次將乙個待排序的記錄按其關鍵字大小插入到前面已排好序的子串行中,直到全部記錄插入完成。2 直接插入排序 帶哨兵的直接插入排序...

希爾插入排序

include include typedef struct base insert node typedef struct base insert list void init base insert list int int void print base insert list base in...

插入排序 希爾排序

我們知道當乙個序列基本有序時,直接插入會變得很高效。因為此時只需少量的移動元素,操作集中在元素的比較上。基於這種想法,我們就試圖把乙個序列在進行直接插入前調整得盡量有序。這就是希爾排序 shell sort 的核心思路。shell只是演算法發明者的名字,無特殊含義 那到底該怎麼做呢?希爾排序一反以前...