六、堆排序 ?堆排序是一种树形选择排序,是对直接选择排序的有效改进。 ?堆的定义下:具有n个元素的序列 (h1,h2,...,hn),当且仅当满足(hi>=h2i,hi>=2i+1)或(hi<=h2i,hi<=2i+1) (i=1,2,...,n/2)时称之为堆。在这里只讨论满足前者条件的堆。由堆的 ...
分类:
编程语言 时间:
2016-12-10 13:34:36
阅读次数:
231
选择排序 每一趟从待排序的元素中,选出最小的元素,放到已经排好序的序列的后面直到全部元素排序完毕。在这个过程中,有序区逐步扩大,而无序区逐渐缩小。 直接选择排序 直接选择排序是将无序区内的最小元素追加到有序区的后面,从而扩大有序区的范围。而我们又是在原地排序,所有也就相当与交换无序区的第一个元素和无 ...
分类:
编程语言 时间:
2016-12-01 17:14:41
阅读次数:
225
基本思想 堆排序是一种树形选择排序,是对直接选择排序的改进。 首先,我们来看看什么是堆(heap): (1)堆中某个节点的值总是不大于或不小于其父节点的值; (2)堆总是一棵完全二叉树(Complete Binary Tree)。 完全二叉树是由满二叉树(Full Binary Tree)而引出来的 ...
分类:
编程语言 时间:
2016-11-09 12:45:38
阅读次数:
344
1、简单选择排序 又称直接选择排序。 思想:利用线性查找搜索出待排序列中的最小元素,并将它移动到最前面,每完成一次遍历,都会使一个元素在正确位置,即第i趟排序后,前面i个元素在正确位置。 时间复杂度:O(n^2) 空间复杂度:只有一个temp的辅助空间:O(1) ...
分类:
编程语言 时间:
2016-11-04 01:17:07
阅读次数:
164
一、基本概念 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置(注:要把最大最小的元素和起始的元素交换), 然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 二、算法特点 是否稳定: false 平均时间复杂度:O(n^2) ...
分类:
编程语言 时间:
2016-11-03 13:45:56
阅读次数:
241
排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。 内排序有可以分为以下几类: (1)、插入排序:直接插入排序、二分法插入排序、希尔排序。 (2)、选择排序:简单选择排序、堆排序。 (3)、 ...
分类:
编程语言 时间:
2016-10-31 13:07:20
阅读次数:
352
一、直接选择排序 1、算法思想: 2、伪代码: 3、实现: ...
分类:
编程语言 时间:
2016-10-04 18:25:03
阅读次数:
113
堆排序是一种树形选择排序,是对直接选择排序的有效改进。 基本思想: 堆的定义如下:具有n个元素的序列(k1,k2,...,kn),当且仅当满足 时称之为堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最小项(小顶堆)。 若以一维数组存储一个堆,则堆对应一棵完全二叉树,且所有非叶结点的值均不大于( ...
分类:
编程语言 时间:
2016-09-20 23:43:04
阅读次数:
189
Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳 ...
分类:
编程语言 时间:
2016-09-19 16:03:16
阅读次数:
215
1. 实现冒泡排序算法,对比相邻元素,如果满足条件就叫唤元素值,把较小的元素移动到数组前面,把较大的元素移动到数组的后面,这样较小的元素就逐渐从底部上升到顶部,排到前面了。 2.实现二分查找法。 3.采用多种算法,模拟摇奖:从1-36中随机抽出8个不重复的数字 4、直接选择排序,就是将指定排序位置与 ...
分类:
编程语言 时间:
2016-09-17 10:40:29
阅读次数:
159