#!/usr/bin/env python # -*- coding: utf-8 -*- #插入排序,缩小增量 def shell_sort(arr): gap = l = len(arr) while(gap > 1): gap = gap/2 for i in xrange(0, l): fo... ...
分类:
编程语言 时间:
2017-10-18 14:51:54
阅读次数:
185
排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法进行归纳。 我不喜欢死记硬背,我更偏向于弄清来龙去脉,理解性地记忆。比如下面这张图,我们将围绕这张图来思考几个问题 ...
分类:
编程语言 时间:
2017-10-11 15:27:46
阅读次数:
214
直接插入排序 要理解shell排序,首先要把直接插入排序的基础打扎实。 学习资料:白话经典算法系列之二 直接插入排序的三种实现、直接插入排序 根据我的思路,直接插入排序设置3重循环。 循环1:对 i=【无序序列】∈[ 1 , length ) 进行遍历。 循环2:对 j=【有序序列】∈[ 0 , i ...
分类:
编程语言 时间:
2017-10-10 14:29:43
阅读次数:
232
记录排序算法中犯的错误 1. 选择排序 没有犯错 2. 插入排序 插入排序中,待插入的元素和有序部分比较,只要有一个满足大小关系,不需要比较其他元素。没有必要和每一个元素比较。 如果比较每一个元素,速度比选择排序慢。 满足大小关系,停止比较,插入排序比选择排序快1.7倍。 3. Shell排序 Sh ...
分类:
编程语言 时间:
2017-09-24 16:23:29
阅读次数:
188
插入排序, shell排序, 选择排序, 冒泡, 堆排序, 归并排序, 快速排序 ...
分类:
编程语言 时间:
2017-09-10 10:17:30
阅读次数:
178
转载:http://www.cnblogs.com/jingmoxukong/p/4303279.html 要点 希尔(Shell)排序又称为缩小增量排序,它是一种插入排序。它是直接插入排序算法的一种威力加强版。该方法因DL.Shell于1959年提出而得名。 希尔排序的基本思想是: 把记录按步长 ...
分类:
编程语言 时间:
2017-08-23 13:42:19
阅读次数:
266
Shell排序 代码写的可以说有一点点丑= = 二叉树排序 这个还是有点麻烦的,写了一个二叉树类和一个节点类,二叉树的话包括插入节点(中序)和打印树(中序),两个都是用递归写的,递归真厉害。 缺点是建树的时候必须创建根节点,也就是那个无参构造函数不能用,否则会出错(指针用的还不够熟啊) 还有没写析构 ...
分类:
编程语言 时间:
2017-08-21 00:23:59
阅读次数:
265
在插入排序中,所有的元素都是挨个和前一个元素进行比较,并置换位置。所以交换的次数为N的平方级别。极端情况下,如果最小元素在最右侧,那么需要逐个和前面元素进行置换。如果将比较的间隔增大,那么会减少移动次数,然后逐次降低比较间隔。 于是比较的间隔的序列如下 h = 3*h+1。 代码如下: 目前要理解s ...
分类:
编程语言 时间:
2017-08-18 14:38:25
阅读次数:
326