<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在插入排序中,在待排序序列的記錄個數比較少,而且基本有序,則排序的效率較高。
1959 年,Donald Shell 從“減少記錄個數” 和 “基本有序” 兩個方面對直接插入排序進行了改進,提出了希爾排序演演算法。
希爾排序又稱為“縮小增量排序”。即將待排序記錄按下標的一定增量分組(減少記錄個數),對每組記錄使用直接插入排序演演算法排序(達到基本有序);
隨著增量逐漸減少,每組包含的關鍵詞越來越多,當增量減至1,整個序列基本有序,再對全部記錄進行一次直接插入排序。
Shell 排序是一種高效的排序演演算法,基於插入排序演演算法。這種演演算法避免了插入排序中的大量移動,如果較小的值在最右邊,就必須移到最左邊。較小的值在最右邊,必須移到最左邊。
演演算法步驟:
array[1...n]
中,增量序列為 {g1, g2, ..., gt}
, n>g1>g2>...>gt=1
。假設我們有一個陣列: [7, 4, 3, 5, 2, 1, 6]
:
第一次希爾排序間隔為3時:
第二次希爾排序間隔為2時:
第三次希爾排序間隔為1時:
package main import "fmt" func swap(array []int, a int, b int) { array[a] = array[a] + array[b] array[b] = array[a] - array[b] array[a] = array[a] - array[b] } func shellSort(array []int, length int) { for gap := length / 2; gap > 0; gap = gap / 2 { for i := gap; i < length; i++ { var j = i for { if j-gap < 0 || array[j] >= array[j-gap] { break } swap(array, j, j-gap) j = j - gap } } } } func main() { nums := []int{7, 4, 3, 5, 2, 1, 6} length := len(nums) shellSort(nums, length) for i := 0; i < length; i++ { fmt.Println(nums[i]) } }
執行結果:
[Running] go run "e:Coding WorkspacesLearningGoTheEasiestWayGo 資料結構希爾排序main.go"
1
2
3
4
5
6
7
空間複雜度: 希爾排序在分組進行插入排序時使用了一個輔助空間 j
,空間複雜度為 O(1)O(1)O(1)
穩定性: 希爾排序的分組導致不同組間的相同數位可能會調換位置,所以希爾排序是不穩定的排序演演算法。
以上就是Go語言資料結構之希爾排序範例詳解的詳細內容,更多關於Go 資料結構希爾排序的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45