编程语言
首页 > 编程语言> > 数据结构与算法(4)——希尔排序

数据结构与算法(4)——希尔排序

作者:互联网

希尔排序

1 算法原理

希尔排序是插入排序的一种,又称为“缩小增量排序”,是插入排序的一种高效改进版本。插入排序

1.1 希尔排序原理

1.2 Python代码

import copy
class Shell(object):
    def __init__(self,A):
        self.list = copy.deepcopy(A)
        self.h=1
        while self.h<int(len(self.list)/2):
            self.h = int(self.h*2)+1
    def sort(self):
        while self.h>=1:
            #排序
            #1.找到要插入的元素
            for i in range(self.h,len(self.list)):
                #2.把待插入元素插入到有序数列中
                j = i
                while j>=self.h:
                    #待插入的元素是list[j],比较list[j]与list[j-h]
                    if self.list[j-self.h]>self.list[j]:
                        self.list[j - self.h], self.list[j]= self.list[j], self.list[j - self.h]
                    else:
                        break
                    j -= self.h
            #h减小
            self.h=int(self.h/2)
        return self.list

测试结果:

排序前数据: [3, 3, 6, 8, 2, 4, 6, 2, 7, 9, 4, 3]
排序后数据: [2, 2, 3, 3, 3, 4, 4, 6, 6, 7, 8, 9]

1.3 时间复杂度分析

太复杂了,用事后计算法对多个算法进行比较,使用time模块进行计时就可以了。比起插入排序还是快了很多很多了(快多少可以自己去试:Test_list = np.arange(1,100000)[::-1])。

结尾

结尾
如果有文字错误、描述错误等,希望各位能私聊或留言指出。
下一篇内容将介绍高级排序(快速排序)并附带相应的python代码。
上一章节:数据结构与算法(3)——归并排序
学习内容来自B站:https://www.bilibili.com/video/BV1Cz411B7qd,如存在版权问题,请及时联系,以免造成非必要纠纷。

标签:排序,插入排序,list,希尔,增长量,数据结构,self
来源: https://blog.csdn.net/weixin_42238563/article/details/117284054