排序算法(二):希尔排序

希尔排序是插入排序的优化版,其算法表示如下:

def shell_sort(arr):
    if len(arr) == 1:
        return arr
    gap = round(len(arr) / 2)
    while gap > 0:
        # insert sort
        for i in range(gap, len(arr)):
            temp = arr[i]
            j = i - gap
            while j >= 0 and arr[j] > temp:
                arr[j + gap] = arr[j]
                j -= gap
            arr[j + gap] = temp
        gap = round(gap / 2)
    return arr
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 该系列文章主要是记录下自己暑假这段时间的学习笔记,暑期也在实习,抽空学了很多,每个方面的知识我都会另起一篇博客去记...
    Yanci516阅读 12,266评论 6 19
  • 前言 本篇文章基本是从常用排序算法总结(一)快速排序引申而来,其中大部分代码和描述都来自这两篇文章。 时间复杂度 ...
    王三的猫阿德阅读 1,122评论 0 1
  • 页眉 正文内容 页脚 颜色代码 000000:红红绿绿蓝蓝 ff代表全色 ff0000:代表全红 f 代表16进制...
    爆米花0104阅读 333评论 0 0
  • 你有想过自己未来会是什么样子吗?说真的,我对这个真的没有认真想过,所以我会时常感到焦虑! 虽然现在的每一天都很努力...
    正妈咪阅读 205评论 0 0
  • 感情面前莫論情商 向來放肆 何必抑制 知我並不是大慈善家 我也有過初吻收過鮮花 然卻偏偏愛上那個他 那時的決定 那...
    南宮雨琦阅读 257评论 0 0