本文实例讲述了python实现希尔排序算法的方法。分享给大家供大家参考。具体如下:
def shellSort(items): inc = len(items) / 2 while inc: for i in xrange(len(items)): j = i temp = items[i] while j >= inc and items[j-inc] > temp: items[j] = items[j - inc] j -= inc items[j] = temp inc = inc/2 if inc/2 else (0 if inc==1 else 1) a = [35, -8, 11, 1, 68, 0, 3]; shellSort(a) print a # [-8, 0, 1, 3, 11, 35, 68]
希望本文所述对大家的Python程序设计有所帮助。
本文向大家介绍java实现希尔排序算法,包括了java实现希尔排序算法的使用技巧和注意事项,需要的朋友参考一下 希尔排序算法的基本思想是:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在
本文向大家介绍python编程实现希尔排序,包括了python编程实现希尔排序的使用技巧和注意事项,需要的朋友参考一下 观察一下”插入排序“:其实不难发现她有个缺点: 如果当数据是”5, 4, 3, 2, 1“的时候,此时我们将“无序块”中的记录插入到“有序块”时,估计俺们要崩盘,每次插入都要移动位置,此时插入排序的效率可想而知。 shell根据这个弱点进行了算法改进,融入了一种叫做“
主要内容:序列的划分方法,希尔排序算法的具体实现前面给大家介绍了 插入排序算法,通过将待排序序列中的元素逐个插入到有序的子序列中,最终使整个序列变得有序。下图所示的动画演示了插入排序的整个过程: 图 1 插入排序算法 观察动画不难发现,插入排序算法是通过比较元素大小和交换元素存储位置实现排序的,比较大小和移动元素的次数越多,算法的效率就越差。 希尔排序算法又叫 缩小增量排序算法,是一种更高效的插入排序算法。和普通的插入排序算法相比,希尔排序算法
本文向大家介绍C++ 算法之希尔排序详解及实例,包括了C++ 算法之希尔排序详解及实例的使用技巧和注意事项,需要的朋友参考一下 C++ 算法之希尔排序算法详解及实例 希尔排序算法 定义: 希尔排序是插入排序的一种,也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。 算法思想: 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序,随
希尔排序 这个算法在插入排序的基础上作出了很大的改善。希尔排序的核心理念与插入排序不同,它会首先比较距离较远的元素,而非相邻的元素。和简单的比较相邻元素相比,使用这种方案可以使离正确位置很远的元素更快回到适合的位置。当开始用这个算法遍历数据集时,所有元素之间的距离会不断减小,直到处理到数据集的末尾,这时算法比较的就是相邻元素了。 主要是通过遍历数组中相隔相同位置的元素去比较大小进行排列 funct
本文向大家介绍Java 插入排序之希尔排序的实例,包括了Java 插入排序之希尔排序的实例的使用技巧和注意事项,需要的朋友参考一下 Java 插入排序之希尔排序的实例 Java代码 运行后的结果为: Java代码 当分割的间隔为1时,变成了直接插入排序。 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
本文向大家介绍Python实现的堆排序算法示例,包括了Python实现的堆排序算法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现的堆排序算法。分享给大家供大家参考,具体如下: 堆排序的思想: 堆是一种数据结构,可以将堆看作一棵完全二叉树,这棵二叉树满足,任何一个非叶节点的值都不大于(或不小于)其左右孩子节点的值。 将一个无序序列调整为一个堆,就可以找出这个序列的最大值
本文向大家介绍Python实现的桶排序算法示例,包括了Python实现的桶排序算法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现的桶排序算法。分享给大家供大家参考,具体如下: 桶排序也叫计数排序,简单来说,就是将数据集里面所有元素按顺序列举出来,然后统计元素出现的次数。最后按顺序输出数据集里面的元素。 但是桶排序非常浪费空间, 比如需要排序的范围在0~2000之间,