美文网首页
排序算法之希尔

排序算法之希尔

作者: 西风那个吹呀吹 | 来源:发表于2020-09-29 21:54 被阅读0次

希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。
希尔排序是非稳定排序算法。
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止。

Swift代码

func shellSort(numbers: inout [Int]) {
    var gap = numbers.count / 2
    while gap > 0 {
        for i in gap ..< numbers.count {
            //index 从0到gap
            var index = i - gap
            while index >= 0 {
                //numbers[index]为gap前部分内容,numbers[index+gap]为gap后部分内容
                //互相比对,前部分数大于后部分数,则交换
                if numbers[index] > numbers[index+gap] {
                    (numbers[index], numbers[index+gap]) = (numbers[index+gap], numbers[index])
                }
                index -= gap
            }
        }
        gap = gap / 2
    }
}

var array = [3,2,5,1,7,9,8]
shellSort(numbers: &array)
//打印结果[1, 2, 3, 5, 7, 8, 9]

相关文章

网友评论

      本文标题:排序算法之希尔

      本文链接:https://www.haomeiwen.com/subject/jtfhuktx.html