三种分割策略:1)以第一个元素为枢纽元;2)以数组内的随机元为枢纽元;3)三数中值分割法(median-of three)选取枢纽元 ...
分类:
编程语言 时间:
2017-12-12 15:16:13
阅读次数:
199
冒泡排序 插入排序 选择排序 希尔排序 归并排序 快速排序 堆排序 计数排序 基数排序 桶排序 O是指计算机执行命令所需的时间 nlogn是算法的时间复杂度,一般排序用的是log2n 总体总结表:这个有个错误就是归并排序需要一个o(n)的辅助数组 冒泡排序 主要思想:外层循环从1到n-1,内循环从当 ...
分类:
编程语言 时间:
2017-12-11 01:03:47
阅读次数:
378
下文外链接中,来自希尔排序希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。其实所谓的增量就是从第一个数字开始之后加上增量互相比较。比如增量为5时,第一个和第六个比较,第二个和第七个比较,然后得出的排序再次比较。增量为3时,第一个和第四个和第七个比较,... ...
分类:
编程语言 时间:
2017-12-10 15:56:47
阅读次数:
184
快速排序 归并排序 堆排序 转自我硕兄:http://www.cnblogs.com/renjiashuo/p/7412583.html ...
分类:
编程语言 时间:
2017-12-09 22:24:16
阅读次数:
121
本文实例讲述了Python实现基于二叉树存储结构的堆排序算法。分享给大家供大家参考,具体如下: 既然用Python实现了二叉树,当然要写点东西练练手。 网络上堆排序的教程很多,但是却几乎都是以数组存储的数,直接以下标访问元素,当然这样是完全没有问题的,实现简单,访问速度快,也容易理解。 但是以练手的 ...
分类:
编程语言 时间:
2017-12-08 22:53:55
阅读次数:
213
堆排序 public class HeapSort { public static void buildMaxHeap(int[] data, int lastIndex){ for(int i=(lastIndex 1)/2;i =0;i ){ //k保存正在判断的节点 int k=i; //如果 ...
分类:
编程语言 时间:
2017-12-08 19:25:21
阅读次数:
162
打印二叉堆:利用层级关系 我这里是先将堆排序,然后在sort里执行了打印堆的方法printAsTree() 执行结果: ...
分类:
编程语言 时间:
2017-12-03 16:25:21
阅读次数:
173
一、堆的概念 所谓堆,它是一个数组,也能够被看成一个近似的全然二叉树。树上每一个结点相应数组的一个元素。二叉堆分为二种:最大堆和最小堆。本文主要介绍最大堆,最小堆类似。最大堆的特点:对于随意某个结点,该结点的值大于左孩子、右孩子的值,可是左右孩子的值没有要求。 二、堆排序算法 首先,按堆的定义将数组 ...
分类:
编程语言 时间:
2017-12-02 15:12:16
阅读次数:
136
public class HeapSort { 1. 2. public static void sort(Comparable[] data) { 3. // 构建最大堆 4. buildMaxHeap(data); 5. // 循环,每次把根节点和最后一个节点调换位置 后面的扔了搞前面的 ... ...
分类:
编程语言 时间:
2017-11-27 12:47:49
阅读次数:
163
在堆排序中,我们首先需要建立一个最大堆(每个最小堆的堆顶元素大于它的子节点),,建立好后在堆顶的元素一定是最大元素,此时我们将这个元素和最后一个元素进行交换,然后重新调整树,让它满足最大堆,以此类推直到交换到第二个元素停止交换。 以下是代码实现: int n = 14; int[] arrs = n ...
分类:
编程语言 时间:
2017-11-26 22:57:43
阅读次数:
239