`

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

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

    04_shell_sort_shell排序算法_

    本文件包含shell排序的基本思路,代码实现,时间复杂度的分析。对数据结构与算法中shell排序算法的实现,附件以python实现。

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

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

    Python实现希尔排序算法的原理与用法实例分析

    希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。 希尔排序的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别...

    Python实现希尔排序的示例代码.py

    希尔排序:代码定义了一个名为`shell_sort`的函数,接受一个待排序的数组作为参数。在函数内部,首先确定初始的间隔`gap`为数组长度的一半,然后进行循环直到`gap`为0。 #在每一次循环中,使用插入排序的思想对数组...

    python实现的希尔排序算法实例

    本文实例讲述了python实现希尔排序算法的方法。分享给大家供大家参考。具体如下: def shellSort(items): inc = len(items) / 2 while inc: for i in xrange(len(items)): j = i temp = items[i] while j &gt;= ...

    希尔排序 python 代码实现

    希尔排序(Shell Sort)是一种排序算法,它是插入排序的一种改进版本。它通过将待排序的元素分组,然后对每个分组进行插入排序,最后逐步缩小分组的规模,直到整个数组有序为止。

    Python 实现十大经典排序算法-LeetCode案例版

    数据结构与算法-Python语言案例实现十大经典排序算法一、 引言1.问题需求2.方法分类二、常见排序方法1. 选择排序(Selection Sort)2. 冒泡排序(Bubble Sort)3. 插入排序(Insertion Sort)4. 希尔排序(Shell ...

    2017黑马Python就业班

    │ 第5节 排序与搜索 │ 第6节 树与树算法 │ 资料 │ ├─04数据库 │ 第1节 MySQL │ 第2节 MongoDB │ 第3节 Redis │ ├─05前端 │ 第1节 HTML │ 第2节 CSS │ 第3节 PhotoShop │ 第4节 HTML5+CSS3 │ 第5节 ...

    希尔排序实用程序(win)

    python希尔排序,开源: https://codechina.csdn.net/-/snippets/353 基于菜鸟的https://www.runoob.com/python3/python-shellsort.html

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

    本文实例讲述了Python排序搜索基本算法之希尔排序。分享给大家供大家参考,具体如下: 希尔排序是插入排序的扩展,通过允许非相邻的元素进行交换来提高执行效率。希尔排序最关键的是选择步长,本程序选用Knuth在1969...

    常用算法(python)

    希尔排序(Shell Sort) 归并排序(Merge Sort) 快速排序(Quick Sort) 堆排序(Heap Sort) 计数排序(Counting Sort) 基数排序(Radix Sort) 桶排序(Bucket Sort) 深度优先搜索(Depth-First Search, DFS) ...

    Python-3.8.0a3.tgz

    这是有效的,因为自Python 3.7以来,常规dicts已经保证了排序。如果需要额外的功能OrderedDict,建议的补救措施是将结果转换为所需的类型:OrderedDict(nt._asdict())。该unicodedata模块已升级为使用Unicode 12.0.0...

    Python-SortGNOMEShellApps按类别排序GNOME应用仪表盘

    Sort GNOME Shell Apps 按类别排序GNOME应用仪表盘

    Python-3.8.0b2.tgz

    这是有效的,因为自Python 3.7以来,常规dicts已经保证了排序。如果需要额外的功能OrderedDict,建议的补救措施是将结果转换为所需的类型:OrderedDict(nt._asdict())。该unicodedata模块已升级为使用Unicode 12.0.0...

    python-3.8.0a4.exe

    这是有效的,因为自Python 3.7以来,常规dicts已经保证了排序。如果需要额外的功能OrderedDict,建议的补救措施是将结果转换为所需的类型:OrderedDict(nt._asdict())。该unicodedata模块已升级为使用Unicode 12.0.0...

    python-3.8.0b2-amd64.exe

    这是有效的,因为自Python 3.7以来,常规dicts已经保证了排序。如果需要额外的功能OrderedDict,建议的补救措施是将结果转换为所需的类型:OrderedDict(nt._asdict())。该unicodedata模块已升级为使用Unicode 12.0.0...

    Python数据结构和算法之希尔排序

    def shell_sort(arr_list): ''' 交换法,用希尔排序方法对列表进行排序 参数: 待排序的列表 执行结果: 输出排好序后的列表 ''' i = (int)(len(arr_list) / 2) # i表示分组的个数,也即是步长 while i

Global site tag (gtag.js) - Google Analytics