麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > Swift > 正文

Swift編程中實(shí)現(xiàn)希爾排序算法的代碼實(shí)例

2020-03-09 17:48:03
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

思想
希爾排序的實(shí)質(zhì)就是分組插入排序,該方法又稱(chēng)縮小增量排序,因DL.Shell于1959年提出而得名。
該方法的基本思想是:先將整個(gè)待排元素序列分割成若干個(gè)子序列(由相隔某個(gè)“增量”的元素組成的)分別進(jìn)行直接插入排序,然后依次縮減增量再進(jìn)行排序,待整個(gè)序列中的元素基本有序(增量足夠小)時(shí),再對(duì)全體元素進(jìn)行一次直接插入排序。因?yàn)橹苯硬迦肱判蛟谠鼗居行虻那闆r下(接近最好情況),效率是很高的,因此希爾排序在時(shí)間效率上比前兩種方法有較大提高。
以n=10的一個(gè)數(shù)組49, 38, 65, 97, 26, 13, 27, 49, 55, 4為例:
第一次 gap = 10 / 2 = 5

Swift,希爾排序,排序算法

1A,1B,2A,2B等為分組標(biāo)記,數(shù)字相同的表示在同一組,大寫(xiě)字母表示是該組的第幾個(gè)元素, 每次對(duì)同一組的數(shù)據(jù)進(jìn)行直接插入排序。即分成了五組(49, 13) (38, 27) (65, 49)  (97, 55)  (26, 4)這樣每組排序后就變成了(13, 49)  (27, 38)  (49, 65)  (55, 97)  (4, 26),下同。
第二次 gap = 5 / 2 = 2
排序后

Swift,希爾排序,排序算法

第三次 gap = 2 / 2 = 1

Swift,希爾排序,排序算法

第四次 gap = 1 / 2 = 0 排序完成得到數(shù)組:

Swift,希爾排序,排序算法

 

實(shí)現(xiàn)代碼:
  

 import UIKit   func shellsort(inout a : [Int]){     let n = a.count-1     for(var gap = n / 2; gap > 0; gap /= 2){       for j in gap...n {         if a[j] < a[j-gap]{           let tmep = a[j]           var k = j - gap           while k >= 0 && a[k] > tmep {//掃一遍 好填最小值             a[k + gap] = a[k]             k -= gap           }           a[k + gap] = tmep         }       }     }   }   var a = [2,5,6,7,8,9,0,1,3,4]   shellsort(&a)


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到swift教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 在线成人免费av | 欧美三级日本三级少妇99 | 海外中文字幕在线观看 | 久久草在线观看视频 | av电影免费播放 | 黑人三级毛片 | 欧美午夜网 | 有兽焉免费动画 | 久久精品视频1 | 久久男人视频 | 毛片午夜| 黄色免费在线电影 | 91精选视频在线观看 | 国产亚洲美女精品久久久2020 | a黄色片| 日本aaaa片毛片免费观蜜桃 | 九一国产精品 | 黄色特级毛片 | 亚洲字幕av | 国产免费午夜 | 亚洲成人第一区 | 亚洲综合一区二区三区 | 国产精品免费小视频 | 午夜精品福利影院 | 欧美日韩爱爱视频 | 久久伊人国产精品 | 久夜tv| 91在线视频精品 | 99精品无人区乱码在线观看 | 精精国产xxxx视频在线播放7 | 久草成人在线 | 久久99久久98精品免观看软件 | 亚洲一级簧片 | 亚洲第一综合色 | 欧美一级电影网站 | 久久精品视频12 | 免费一级特黄欧美大片勹久久网 | 在线成人一区二区 | 国产视频在线播放 | 国产男女爽爽爽爽爽免费视频 | 欧美a视频 |