数据结构中的排序算法 当待排序序列基本有序时优先选择简单排序,快速排序平均次数少于堆排序 1 插入排序 1) 直接插入排序 第一次将位置0和位置1进行比较,小的放前。 第二次将位置2上的数字,插入到位置0和位置1中。 … 第k次将位置k上的数字,插入到第k-1次已经完成的序列中。 5 2 6 0 3 ...
分类:
编程语言 时间:
2018-06-16 23:35:48
阅读次数:
257
<!DOCTYPE html PUBLIC " //W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1 transitional.dtd" body, table{font family: 微软雅黑 ...
分类:
编程语言 时间:
2018-06-16 17:06:38
阅读次数:
205
内排序之希尔排序 希尔排序是直接插入排序的优化算法,维基百科上的一段话: 假设有一个很小的数据在一个已按升序排好序的数组的末端, 如果用复杂度为O(n2)的排序(冒泡排序或插入排序), 可能会进行n次的比较和交换才能将该数据移至正确位置。而希尔排序会用较大的步长移动数据,所以小数据只需进行少数比较和 ...
分类:
编程语言 时间:
2018-06-08 18:03:18
阅读次数:
191
直接插入排序 图解: 方法一代码: 输出结果: 方法二代码: 输出结果: ...
分类:
编程语言 时间:
2018-06-05 20:01:28
阅读次数:
203
希尔排序( Shell sort) 插入排序的改进版本,其核心思想是将原数据集合分割成若干个子序列,然后再对子序列分别进行直接插入排序,使子序列基本有序,最后再对全体记录进行一次直接插入排序。 1.算法描述: 先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,具体算法描述: 2.算法属 ...
分类:
编程语言 时间:
2018-06-01 00:19:47
阅读次数:
186
简单选择排序 简单选择排序就是通过关键字之间的比较,在记录里面找到最小(或者最大)的数字,并同当前位置交换之。 贴个代码: 分析一下:很显然,对于一个无序数组来说,把第一个数的下标暂且作为值最小的下标,然后通过与其后的数据对比,找出真正的最小的数组的下标,如果找到,就交换,如果没找到,说明当前数据是 ...
分类:
编程语言 时间:
2018-05-29 12:00:36
阅读次数:
191
分类 一、按照是否数据涉及内外存交换 1-内部排序:适用于记录个数不是很多的小文件 2-外部排序:适用于记录个数太多,不能一次将全部记录放入内存的大文件 二、按照策略划分内部排序方法 1-插入排序:直接插入排序与希尔排序 2-选择排序:直接选择排序与堆排序 3-交换排序:冒泡排序与快速排序 4-归并 ...
分类:
编程语言 时间:
2018-05-27 17:18:07
阅读次数:
252
1. 基本有序 在众多排序算法中,有一个概念被多次提及:数组基本有序。 例如: 直接插入排序(Insertion Sort)在面对数组基本有序时,体现出良好的性能。 平滑排序(Smooth Sort)在数组趋向有序时,其时间复杂度趋向于 O(n)。 快速排序(Quick Sort)和堆排序(Heap ...
分类:
编程语言 时间:
2018-05-23 02:20:45
阅读次数:
251
直接插入排序 直接插入排序类似对扑克牌的整理,初始情况下把前面第一个看作有序序列,然后后面全是无序。 这个排序写过很多遍,但是每次回顾都感觉到设计者精彩巧妙的安排。 ...
分类:
编程语言 时间:
2018-05-21 16:14:12
阅读次数:
206
一、排序思路 将原有的数组看为两块,一块是已经排好序的(我们叫有序区),一块是待排序的(我们叫无序区),不断地从无序区中取出其第一个元素,搜寻该元素应该放在有序区的哪个位置,并将该元素放入该位置,完成这个步骤后,有序区长度+1,无序区长度-1,直至无序区长度为0,即无序区中不再有元素,排序就完成啦。 ...
分类:
编程语言 时间:
2018-05-20 23:59:10
阅读次数:
460