一:堆排序 堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序... ...
分类:
其他好文 时间:
2016-09-12 23:59:49
阅读次数:
366
代码[3, 1, 5, 7, 2, 4, 9, 6]--把全部的最小的数(1)的和第 1 个数(3)交换位置[1, 3, 5, 7, 2, 4, 9, 6]--把余下的最小的数(2)的和第 2 个数(3)交换位置[1, 2, 5, 7, 3, 4, 9, 6]--把余下的最小的数(3)的和第 3 个... ...
分类:
编程语言 时间:
2016-09-12 18:32:55
阅读次数:
182
不同数量级对应的值存在的关系: O(1)(基本运算次数与问题规模n无关,也称为常数阶)<O(log2 ^n)<O(n)<O(n log 2^n)<O(n ^2)<O(n ^3)<O(2^n)<O(n!) 1.选择排序:不稳定,时间复杂度o(n^2) 基本思想:对待排序的记录序列进行n-1遍的处理,第 ...
分类:
编程语言 时间:
2016-09-11 20:11:01
阅读次数:
156
稳定算法: 直接插入排序、折半插入排序、冒泡排序、归并排序 不稳定算法: 希尔排序、快速排序、简单选择排序、堆排序 直接插入排序(从原位置在有序部分逐次比较找到最终位置插入) void InsertSort(ElemType A[], int n) { int i, j; for( i = 2, i ...
分类:
编程语言 时间:
2016-09-11 18:54:29
阅读次数:
216
数组第二种定义 数组-遍历 数组操作的核心思想就是对角标的操作; 数组-求最值 1、循环 比较 排序 选择排序 把原始数组分割成了两个数组,至少有一个是有序的 冒泡排序 相邻元素比较 位置置换代码提取 形参 排序性能问题 选择排序,每一轮找到最小值后才换位 查找 遍历去比较要查找的值,没有返回-1 ...
分类:
编程语言 时间:
2016-09-11 18:44:41
阅读次数:
159
选择排序的思想是:把每一个数都与第一个数比较,如果小于第一个数,就把它们交换位置;这样一轮下来,最小的数就排到了最前面;重复n-1轮,就实现了选择排序 选择排序和冒泡排序思想上有些相近 ...
分类:
编程语言 时间:
2016-09-11 10:24:54
阅读次数:
578
数据结构排序算法之——选择排序(Select Sort) 选择排序想关链接: 维基百科:https://zh.wikipedia.org/zh/%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F 百度百科:http://baike.baidu.com/view/547263.h ...
分类:
编程语言 时间:
2016-09-11 00:10:35
阅读次数:
239
排序类别 时间复杂度 空间复杂度 稳定 插入排序 O(n2) 1 √ 尔排序 O(n2) 1 × 冒泡排序 O(n2) 1 √ 选择排序 O(n2) 1 × 快速排序 O(Nlogn)/ O(n2) O(logn) × 堆排序 O(Nlogn) 1 × 归并排序 O(Nlogn) O(n) √ ...
分类:
编程语言 时间:
2016-09-10 11:30:33
阅读次数:
122
选择排序,思路比较简单,从要排序的N个数中,先选出最小(大)的数,然后插入。 如何选最小的? 然后每次将选出的最小的插入到未排序的数的最前面。 ...
分类:
编程语言 时间:
2016-09-09 17:02:08
阅读次数:
134
插入排序:自1开始,通过交换将i插入其左端的有序的数列中。 交换次数不确定,但比较次数较均衡。 比冒泡更优。 选择排序:与冒泡相似,每一趟找到自i到末端最小的数的index,然后与i交换 一趟只需一次交换,所以比冒泡快。 冒泡排序:i从左至右,i定住时将自i到末端最小的数移至i处,完成一趟,以此类推 ...
分类:
编程语言 时间:
2016-09-08 17:58:43
阅读次数:
174