1 插入排序直接插入排序:将一个记录插入到已排序的有序表中,得到一个新的有序表,记录数增1。希尔排序:先将待排序的记录序列分成若干个子序列分别进行直接插入排序,待整个序列中的记录基本有序时,在对全体记录进行一次直接插入排序。2 交换排序冒泡排序:每一次冒泡都会使当前的最大记录被安置在最后一个记录的位...
分类:
编程语言 时间:
2015-09-07 16:43:38
阅读次数:
394
一. 希尔排序的实质是分组插入排序,又称为缩小增量排序,是不稳定的排序,并且时效分析很难,因为增量选择的关系二. 思想:将数组按照增量分为若干个子序列分别进行直接插入排序,然后缩减该增量,直到增量等于1,此时该数组基本有序,对该数组进行一次直接插入排序,效率比直接插入高三. 例子 假设有十个数 .....
分类:
编程语言 时间:
2015-09-07 09:28:42
阅读次数:
164
一、插入排序 –直接插入排序:将一个记录插入到已经排好序的有虚表中,从而得到一个新的、记录数增1的有序表。 –二分插入排序 –希尔排序 ①直接插入排序(从后向前找到合适位置后插入) 1、基本思想:每...
分类:
编程语言 时间:
2015-09-05 12:35:08
阅读次数:
279
数据结构与算法——博文目录排序:归并排序希尔排序(shell)堆排序快速排序插入排序简单选择排序冒泡排序动态规划:动态规划1——最长公共子序列动态规划2——最长公共子串三角形问题——(递归,递推,动态规划)广度优先搜索和深度优先搜索:castle problem——(深度优先搜索,递归实现和stac...
分类:
编程语言 时间:
2015-09-04 22:33:04
阅读次数:
248
经典排序算法 - 希尔排序Shell sort希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分,第一部分,希尔排序介绍第二部分,如何选取关键字,选取关键字是希尔排序的关键第一块希尔排序介绍准备待排数组[6 2 4 1 5 9]首先需要选取关键字,例如关键是3和1(第一步分成三组,...
分类:
编程语言 时间:
2015-09-04 19:51:14
阅读次数:
158
对几种排序方法进行简单总结。排序类型时间复杂度空间复杂度稳定性冒泡排序O(N^2)O(1)稳定插入排序O(N^2)O(1)稳定选择排序O(N^2)O(1)不稳定希尔排序O(N^2)O(1)不稳定堆排序O(NlogN)O(1)不稳定快速排序O(NlogN)O(logN)不稳定归并排序O(NlogN)O...
分类:
编程语言 时间:
2015-09-03 11:30:58
阅读次数:
128
知乎上有一段回答[1]:什么是赋范线性空间、内积空间,度量空间,希尔伯特空间 ? 现代数学的一个特点就是以集合为研究对象,这样的好处就是可以将很多不同问题的本质抽象出来,变成同一个问题,当然这样的坏处就是描述起来比较抽象,很多人就难以理解了。既然是研究集合,每个人感兴趣的角度不同,研究的方向也就.....
分类:
其他好文 时间:
2015-09-01 19:54:53
阅读次数:
219
希尔排序(by Donald Shell 1959年提出) 原理:一次改变2个逆序对。要克服简单排序每次只交换相邻元素希尔增量序列原始希尔排序原始希尔排序:void Shell_sort(ElementType A[], int N){ for(D=N/2;D>0;D/=2){ //希...
分类:
编程语言 时间:
2015-08-31 09:54:58
阅读次数:
209
冒泡排序:O(N^2)。输入对结果没有影响。
插入排序:最差O(N^2),最优O(N),平均O(N^2)。输入有影响,例如已排好序,则为O(N)。
选择排序:最差,最优,平均都是O(N^2)。输入对结果没有影响。
希尔排序:最差为o(Nlg^2N)。缩小增量排序。关键是如何选取这个增量序列。(一般,但不够好的选择是 k/2)。
堆排序:最差,最优,平均都是O(NlgN)。堆排序是所有下界排...
分类:
编程语言 时间:
2015-08-29 21:45:53
阅读次数:
192