`

Python Shell排序

 
阅读更多

Shell排序属于插入排序,  增量为1的Shell排序就是直接插入排序

设增量用h表示,Shell排序就是 将数组分为k = (len-1)/h组, 每组为i + n*h 序列 (n为整数 , n=[0,k-1],i=[0,k-1] )

即分成序列:

0,h,2*h......

1,1+h , 1+ 2*h.....

2, 2 +h,  2 + 2* h...

....

i , i + h, i +2*h....

 

分别为这些序列进行插入排序,再重新计算h值排序

增量公式有许多,这里使用 h = 3 * h +1

 

#Shell排序
class ShellSort:
    def sort(self,arrData):
        length = len(arrData);
        h = 1;
        while h < length/3:
            h = h*3 +1;
        while h>0:
            i = h;
            while i < length:
                if arrData[i] < arrData[i-h]:
                    #保存arrData[i]以免被覆盖
                    tmp = arrData[i];
                    j = i - h;
                    #整体向后移动,
                    while j>=0 and arrData[j] > tmp:
                        arrData[j + h] = arrData[j];
                        j = j - h;
                    arrData[j + h] = tmp;
                i = i + 1;
                print(arrData);
            h = (h-1)//3;
        return;
    
        
shellSort = ShellSort();
shellSort.sort([7,2,5,3,1,8,6,100,48,38,45,20,34,67,12,23,90,58]);

 

分享到:
评论

相关推荐

    python常用排序算法汇总

    # sort.shellSort() #希尔排序 # sort.insertionSort() #插入排序 # sort.Selectionsort1() #选择排序 # sort.heapSort() #堆排序 # sort.countSort() #计数排序 # sort.quickSort() #快速排序 该排序算法把...

    基于Python实现的K-Shell节点排序算法

    基于python-2.7实现的K-Shell节点排序算法,算法结果输出每个节点K值。

    基于python的排序算法-希尔排序Shell Sort

    希尔排序(Shell Sort)是一种插入排序的改进版,由Donald Shell在1959年提出。它是通过将待排序的数据序列划分为多个子序列,然后对每个子序列进行插入排序,逐渐减少子序列的间隔,直到间隔为1,即整个序列成为一...

    04_shell_sort_shell排序算法_

    以下是一个简单的Python实现的Shell排序示例: ```python def shell_sort(arr): n = len(arr) gap = n // 2 while gap &gt; 0: for i in range(gap, n): temp = arr[i] j = i while j &gt;= gap and arr[j - gap] ...

    基础算法-python希尔排序

    【基础算法】-python希尔排序# python实现希尔排序(插入排序的一种)# 先宏观进行调整,在进行微观调整 def shellSort(lst, k, reverse=False): length = len(lst) dk = k # 设置一个增量dk while dk &gt; 0: for i in ...

    基于python的排序算法实现

    本篇文章将详细讲解基于Python实现的七种常见排序算法:快速排序、插入排序、选择排序、希尔排序、冒泡排序、堆排序以及合并排序。 1. 快速排序(Quick Sort) 快速排序是一种分治策略的排序算法,由C.A.R. Hoare在...

    Python-Python库根据数据的相对排序在shell中生成sparklines

    本主题聚焦于在shell环境中使用Python库生成sparklines,这是一种简洁的、内嵌在文本中的小型图表,用于快速视觉化数据。Sparklines可以很好地在终端或控制台输出中显示数据趋势,而无需依赖完整的图形用户界面。 ...

    Python实现希尔排序.rar

    希尔排序(Shell Sort)是一种基于插入排序的快速改进算法,由Donald Shell于1959年提出。它的主要思想是将待排序的数据按照一个增量序列分成若干个子序列,然后分别对每个子序列进行插入排序,最后再进行一次全局的...

    各种排序算法的Python实现

    这里我们将深入探讨标题提及的七种排序算法的Python实现:冒泡排序、堆排序、归并排序、快速排序、选择排序、希尔排序以及直接插入排序。 **冒泡排序**: 冒泡排序是一种简单直观的排序算法,通过不断交换相邻的未...

    排序算法之Python

    六、希尔排序(Shell Sort) 希尔排序是插入排序的改进版,通过间隔序列(希尔增量)将数组分成多个子序列,对每个子序列进行插入排序,最后将间隔缩小至1,进行一次插入排序。Python实现希尔排序时,需要设计合适的...

    python - 排序(csdn)————程序.pdf

    希尔排序是一种基于插入排序的改进算法,由Donald Shell于1959年提出。它通过设定不同的间隔gap对列表中的元素进行分组,然后对每个分组内部进行插入排序。初始的gap设置为列表长度的一半,然后在每一轮排序中逐步...

    Python版数据结构与算法-排序算法源代码,实现了冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序源代码

    4. **希尔排序(Shell Sort)**:希尔排序是一种改进的插入排序,通过将待排序序列分为多个子序列来减少元素的移动次数。Python实现时,首先设置一个间隔序列,然后逐步减小间隔进行插入排序。 5. **归并排序...

    排序算法之ShellSort

    python 排序算法之ShellSort

    基于会话的推荐_Python_Shell_下载.zip

    9. **Shell脚本**:在Python Shell中运行项目,可能涉及到安装依赖、运行训练脚本、查看结果等操作,这需要熟悉命令行界面和Python环境的管理。 10. **版本控制**:"SessionRec-pytorch-main"这个文件名暗示了项目...

    中英文语料处理脚本,python,c++,java_Python_Shell_下载.zip

    2. **C++**:虽然在NLP领域Python更常见,但C++因其高效性能而常用于构建底层算法和速度敏感的部分,例如快速排序、哈希表实现和大规模文本数据的存储。 3. **Java**:Java也是NLP领域的常用语言,例如Apache Open...

    Python实现10大排序算法.rar

    10. 希尔排序(Shell Sort):希尔排序是插入排序的一种改进版本,通过设置一个间隔序列来减少比较和交换的次数。其时间复杂度介于O(n)到O(n^2)之间,具体取决于间隔序列的选择。 这些排序算法各有优缺点,适用于...

    Python排序搜索基本算法之希尔排序实例分析

    ### Python排序搜索基本算法之希尔排序实例分析 #### 希尔排序简介 希尔排序(Shell Sort)是一种基于插入排序的高效算法。它通过将原始数组分割成多个子数组,并分别对这些子数组进行插入排序,从而提高了排序的...

Global site tag (gtag.js) - Google Analytics