继上一篇实现基于堆的优先队列后,这次将利用上一次完成的基于堆的能够重复删除最大元素操作的优先队列来实现一种经典而优雅的排序算法,称之为堆排序。
堆排序可分为两个阶段:
1.构建堆:在堆的构建过程中,我们将原始数组重新组织安排进一个堆中;
2.下沉排序:从堆中按递减顺序取出所有元素并得到排序结果
具体的思想在下面的代码中有较为详细的注释:
/**
*
* @author seabea...
分类:
编程语言 时间:
2015-07-26 17:29:37
阅读次数:
142
该版本算是比较成熟的啦,欢迎大伙拿来试用!!!1.新增数据库连接和备份时间配置文件conf2.新增日志文件,程序运行的一些异常会记录在log文件下后续的工作:1.将代码切割为多个文件,分类存放代码2.加入自动后台运行的支持3.加入开机自动运行的支持完成上面3个之后,我的linux c数据库备份程序就...
分类:
数据库 时间:
2015-07-25 18:22:49
阅读次数:
135
快速排序是一种分治的排序算法。它将一个数组分成两个子数组,将两部分独立地排序。快速排序和归并排序是互补的,归并排序将两个子数组分别排序,并将有序的子数组归并以将整个数组排序;而快速排序则是当两个子数组有序时整个数组也就自然有序了。在快速排序中,切分的位置取决于数组的内容。
优点:
1.实现简单;
2.适用于各种不同的输入数据且在一般应用中比其他排序算法都要快得多;
3.原地排序;
4.时...
分类:
编程语言 时间:
2015-07-25 12:16:54
阅读次数:
119
归并排序思想:将一个数组分成两部分分别排序(使用递归),然后将结果合并起来,即将最后两个有序的数组归并成一个更大的有序数组。
时间复杂度O(n) = NlogN
归并排序最吸引人的性质是它能保证将任意长度为N的数组排序所需时间和NlogN成正比,而缺点便是它所需的额外空间和N成正比。
归并排序又分为自顶向下的排序方式和自底向上的排序方式:
自顶向下的排序方式是利用了分治的思想,将一个大问题...
分类:
编程语言 时间:
2015-07-24 20:54:17
阅读次数:
181
希尔排序思想:使数组中任意间隔为h的元素都是有序的。...
分类:
编程语言 时间:
2015-07-23 17:45:32
阅读次数:
133
选择排序步骤:
1.找到数组中参与遍历比较的所有元素中的最小元素的下标;
2.将最小元素与数组中参与遍历比较的第一个元素进行交换(如果第一个元素就是最小元素的话,那么也会进行一次交换);
3.若数组中还有需要参与遍历比较的元素,则跳转到步骤1;否则排序结束。
在算法第四版中给出的所有排序均是适用于任意实现了Comparable接口的数据类型,若要将数字作为测试用例,请勿使用基本数据...
分类:
编程语言 时间:
2015-07-22 19:02:26
阅读次数:
148
前期已经完成了hadoop全分布模式的部署和运行,近期想更进一步的了解hadoop原理,基于hadoop2.X的书籍最好的莫过于《hadoop权威指南(第四版)》,很可惜作者年初才刚写完,没来得及翻译,只好看英文版了,书中的要点重点在接下来的一段时间我会依次翻译出来(全部翻译不太现实,没那么多时间精力,将近900页呢),如果有翻译不妥的地方,还请大家指出来,共同进步,谢谢!
今天是个开头,就先翻...
分类:
其他好文 时间:
2015-07-22 13:04:27
阅读次数:
97