来都来了,你确定不看看常用的希尔排序算法<四>!(python版本图文并茂!!!!)(代码片段)

温柔且上进c 温柔且上进c     2022-12-30     637

关键词:

希尔排序

概念:

       •希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个列表元素恰被分成一组,算法便终止

希尔排序思想:

       •希尔排序的基本思想是:将数组列在一个表中并对列分别进行插入排序,重复这过程,不过每次用更长的列(步长更长了,列数更少了)来进行。最后整个表就只有一列了

希尔排序算法实现:

def shell_sort(li):
    n = len(li)  # 列表长度
    grp = n // 2  # 间隔步长
    while grp > 0:
        for j in range(grp, n):
            i = j
            while i > 0:  # 循环判断交换
                if li[i] < li[i - grp]:
                    li[i], li[i - grp] = li[i - grp], li[i]
                    i -= grp
                else:
                    break
        grp = grp // 2 # 循环一次,间隔缩小一倍


if __name__ == '__main__':
    li = [54, 26, 93, 17, 77, 31, 44, 55, 20]
    shell_sort(li)
    print(li)

# 排序结果:[17, 20, 26, 31, 44, 54, 55, 77, 93]

来都来了,你确定不看看常用的冒泡排序算法<一>!(python版本图文并茂!!!!)(代码片段)

常见的排序!!冒泡排序冒泡排序       基本概念:              •冒泡排序(英语:BubbleSort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺... 查看详情

来都来了,你确定不看看常用的插入排序算法<三>!(python版本图文并茂!!!!)(代码片段)

插入排序算法概念:       •插入排序(英语:InsertionSort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入... 查看详情

来都来了,你确定不看看,阿里云centos8安装docker!!(图文并茂版!!!)(代码片段)

阿里云Centos8安装Docker准备工作查看centos系统的版本号查看centos系统内核版本Centos8安装Docker切换到管理员权限安装必要的系统工具添加软件镜像源(阿里镜像源)更新并安装Docker-CE(社区版)安装完成查看Docker版本准备工作... 查看详情

来都来了,你确定不看看,git从零开始的详细使用教程,你一定能学废!!(万字长文图文并茂版!!!!)(代码片段)

Git详细使用教程!!!认识GitWindows安装GitGit环境配置用户名与邮箱地址的设置Git中实用的自定义配置Git忽略某个或某类文件强制添加被忽略的文件偷懒大法:配置别名配置文件Git的基础命令在已存在目录中初始化... 查看详情

来都来了,你确定不看看,使用python中的科学计算库numpy操作数组,你一定能学废!!(图文并茂版!!!!)(代码片段)

Numpy操作数组Numpy库Numpy库的介绍Numpy库的安装:python中数组与列表对比列表:数组:数组的创建使用array方法创建数组注意:ndmin,dtype参数的使用使用arange方法创建数组使用random(随机数)方法创建数组其它方式... 查看详情

来都来了,你确定不看看,在linuxcentos8下安装redis,你一定能学废!!!(图文并茂版!!!)(代码片段)

centos8安装redis安装gcc编译环境新建个目录,下载redis下载完成后解压缩进入文夹目录,并进行编译和安装查看redis版本!!启动redis服务端启动redis客户端修改配置文件并以配置文件启动redisbind127.0.0.1protected-moderequir... 查看详情

来都来了,你确定不看看,阿里云服务器centos8安装mysql8.0!!(图文并茂版!!!)(代码片段)

阿里云服务器Centos8安装MySQL8.0使用最新的包管理器dnf安装MySQL设置开机自启动检查MySQL的启动状态查看MySQL版本添加密码及安全设置使用root用户登录远程连接数据库配置设置远程连接信息开放防火墙MySQL3306端口关闭MySQL主机查询dns... 查看详情

java常用排序算法/程序员必须掌握的8大排序算法

...序不稳定:快速排序,希尔排序,堆排序。  先来看看8种排序之间的关系:     查看详情

经典排序算法学习笔记四——希尔排序

一、希尔排序数据结构数组最差时间复杂度根据步长序列的不同而不同。已知最好的:O(n*log^{2}n)最优时间复杂度O(n)平均时间复杂度根据步长序列的不同而不同。最差空间复杂度O(n)          1... 查看详情

常用算法之----选择排序插入排序和希尔排序(代码片段)

一些说明我将会写一系列关于算法的博客,因为我是程序员,并不是计算机科学家,也即我是搞工程的,并不是搞学术的,所以对于我来说,最重要的就是1.有哪些算法2.这些算法的原理3.这些算法的实现4.这些算法的效率 而... 查看详情

常用算法java实现之希尔排序

  希尔排序严格来说是基于插入排序的思想,又被称为缩小增量排序。  具体流程如下:  1、将包含n个元素的数组,分成n/2个数组序列,第一个数据和第n/2+1个数据为一对...  2、对每对数据进行比较和交换,排好顺序... 查看详情

大厂敲门砖,通过动态效果图带你掌握常用算法(代码片段)

目录一、算法思维导图二、算法分类三、冒泡排序1、基本思想2、动态效果图3、代码实现4、速度测试四、选择排序1、基本思想2、动态效果图3、代码实现4、速度测试五、插入排序1、基本思想2、动态效果图3、代码实现4、速度测... 查看详情

408数据结构与算法—希尔排序donaldshell(十七)

【408数据结构与算法】—希尔排序DonaldShell(十七)一、希尔排序基本思想先将整个待排记录序列分割成若干子序列,分别进行直接插入排序,待整个序列中的记录基本有序时,再对全体记录进行一次直接插入... 查看详情

java实现的常用5大排序算法

...然后将找到的最小值与i指向的值进行交换。因为每一趟确定元素的过程中都会有一个选择最 查看详情

算法给小码农插入排序洞天,希尔排序轮回(代码片段)

...f09;**==测直接插入排序和希尔排序的性能(让你看看什么才叫希尔排序)代码Sort.hSort.ctest.c排序排序的概念及其运用排序的概念==排序:==所谓排序,就是使一串记录,按照其中的某个或某些... 查看详情

排序算法之希尔排序

...   这个增量习惯上用字母h来表示这个增量,常用的h序列由Knuth 查看详情

[数据结构]选择排序算法和希尔排序算法详解(代码片段)

选择排序算法是经典算法之一,你可以想象你在打牌,每次拿到的一张牌就是待排序的一张,你需要每一次跟之前的牌进行比较,然后将这张牌插入到合适的位置。那么选择排序也是一样,将整个数组看成两个部分,有序部分和... 查看详情

数据结构c语言版八大算法(上)图文详解带你快速掌握——希尔排序,堆排序,插入排序,选择排序,冒泡排序!(代码片段)

数据结构之八大算法详解(1)——希尔排序,堆排序,插入排序,选择排序,冒泡排序!插入排序基本思想把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的... 查看详情