插入排序,希爾排序

2021-09-01 20:52:17 字數 731 閱讀 6670

# -*- coding: utf-8 -*-

"""created on sun nov 18 13:28:49 2018

"""#插入排序難點

插入排序(英語:insertion sort)是一種簡單直觀的排序演算法。

它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。

插入排序在實現上,在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。

'''def insert_sort(alist):

n=len(alist)

for j in range(1,n):

i=jwhile i>0: #重點在交換後繼續比較

if alist[i]0,然後繼續迴圈

alist[i]0:

#按步長進行排序

for i in range(gap,n):

j = i

#插入排序

while j>=gap and alist[j-gap]>alist[j]:

alist[j-gap],alist[j] = alist[j],alist[j-gap]

j -=gap

gap=gap//2

alist = [54,26,93,17,77,31,44,55,20]

shell_sort(alist)

print(alist)

插入排序 希爾插入排序

本文借鑑於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...

插入排序 希爾排序

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

插入排序 希爾排序

希爾排序 先將整個待排序的記錄序列分割成為若干子串行分別進行直接插入排序,待整個序列中的記錄 基本有序 時,再對全體記錄進行依次直接插入排序。以n 10的乙個陣列49,38,65,97,26,13,27,49,55,4為例 第一次 gap 10 2 5 4938 6597 2613 2749554 ...