堆排序 堆排序时间复杂度为O(nlgn),且具有空间原址性,只需要常数个额外的元素空间存储临时数据。但堆排序是不稳定的算法,即对相等的两个元素,排序后不能保证他们的顺序与原始数据的顺序相同。 1.堆 堆是一个数组,可以把它看成一个近似的完全二叉树。树上的每一个结点对应数组中的一个元素,除最底层外,该 ...
分类:
编程语言 时间:
2016-07-14 19:04:34
阅读次数:
164
Java常用排序算法
插入排序
希尔排序
简单排序
堆排序
冒泡排序
快速排序...
分类:
编程语言 时间:
2016-07-13 16:15:35
阅读次数:
180
本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快 ...
分类:
编程语言 时间:
2016-07-12 20:59:49
阅读次数:
243
题目描述 Description 小毛终于到达宝藏点,他意外地发现有一个外星人(名叫Pluto)。宝藏是一些太空黄金,有n堆排成一行,每堆中有xi颗黄金。小毛和Pluto决定轮流从中取出黄金,规则是每次只能从最左边或最右边取出一堆黄金,直到所有黄金被取出。小毛先取,两人都以最优策略进行选取,求两人的 ...
分类:
其他好文 时间:
2016-07-09 19:15:00
阅读次数:
290
二叉树基础:
刚看到堆排序,顺便记录一下关于树的一些基本概念:
前言
前面介绍的栈、队列都是线性结构(linear structure)。而树是非线性结构(non-linear structure)。因此,树中的元素之间一般不存在类似于线性结构的一对一的关系,更多地表现为多对多的关系。直观地看,它是数据元素(在树中称为节点)按分支关系组织起来的结构。显然,树形结构是比线性结构...
分类:
其他好文 时间:
2016-07-08 19:56:13
阅读次数:
185
题目 给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。 解题 归并排序 ...
分类:
编程语言 时间:
2016-07-07 18:59:24
阅读次数:
414
7种基本排序算法的Java实现 转自我的Github 以下为7种基本排序算法的Java实现,以及复杂度和稳定性的相关信息。 以下为代码片段,完整的代码见Sort.java 插入排序 Shell排序 选择排序 堆排序 优先级队列内部实现就是一个最小堆,这里就不自己实现heap了 冒泡排序 快排 归并排 ...
分类:
编程语言 时间:
2016-07-04 23:45:39
阅读次数:
340
经典排序算法在面试中占有很大的比重,也是基础。包括冒泡排序,插入排序,选择排序,希尔排序,归并排序,快速排序,堆排序。希望能帮助到有需要的同学。全部程序采用JAVA实现。
本篇博客所有排序实现均默认从小到大。
一、冒泡排序
BubbleSort
介绍:
冒泡排序的原理非常简单,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
步骤...
分类:
编程语言 时间:
2016-07-02 11:58:35
阅读次数:
308