Swift-希尔排序

希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:
插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率
但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位,希尔排序每次移动位数可以通过实际情况来控制,


希尔排序.gif

核心代码:
<pre><code>` func sort(arr:inout [Int]) {

    let count:Int = arr.count
    var gap:Int = 1
    let base:Int = 3
    while (gap < count / base) {
        gap = base * gap + 1;
    }
    
    while gap > 0 {
        for i in gap..<count {
            for j in (gap...i).reversed()  {
                if  arr[j] < arr[j-gap]{
                    swap(&arr[j], &arr[j-gap])
                }

            }
        }
        gap = gap / base
    }
}`</code></pre>

测试代码:
<pre><code>var arr:[Int] = [10,8,1,5,3,4,9,0,7,11] let shellSort:ShellSort = ShellSort() shellSort.sort(arr: &arr) print("FlyElephant-希尔排序---\(arr)")</code></pre>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容