Java排序算法(一):概述 排序是程序开发中一种非常常见的操作,对一组任意的数据元素(或记录)经过排序操作后,就可以把他们变成一组按关键字排序的有序队列。 对于排序算法从以下几点去衡量算法的优劣: 对于排序算法的分类: 外部排序: 多路归并排序 败者树 内部排序: 插入排序:直接插入排序,希尔排序 ...
分类:
编程语言 时间:
2017-09-27 14:26:19
阅读次数:
223
一、定义问题 外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装入内存的部分,分别把每一部分调入内存完成排序。然后,对已经 ...
分类:
编程语言 时间:
2017-08-01 19:13:04
阅读次数:
137
在写多路归并前,我想是时候先总结下我的这几年。总结的经验,不仅包括我个人这几年的见闻感悟与得失,也是80后这代的一个缩影,以及对社会的一些思考。
分类:
其他好文 时间:
2017-03-07 19:44:36
阅读次数:
246
一、外排序排序按数据存在的位置不同分为内排序和外排序内排序:数据都在内存中,选择合适的排序方法对数据进行排序,比如选择排序、快速排序等衡量内排序的效率是数据的比较次数外排序:数据无法全部加载到内存中,只能不断在外部存储器和内存中进行交换完成排序衡量外排序的..
分类:
编程语言 时间:
2017-02-12 16:11:22
阅读次数:
389
在之前算法考试之前看过归并排序,当时觉得好难啊,卧槽怎么会有这么难的排序算法啊什么的。但是如今再一看其实略一眼就明白了,其原理非常简单,就是通过分成两个已排序的数组合并到一块而已,合并的时候也没有什么特别的技巧,也就是一个个比较而已额。其步骤大概是(个人算法的步骤,还有其他的如多路归并排序或者细节有 ...
分类:
编程语言 时间:
2017-01-15 15:50:14
阅读次数:
154
来来来,根据这篇文章,学一下败者树吧: http://blog.csdn.net/whz_zb/article/details/7425152 一、胜者树 胜者树的一个优点是,如果一个选手的值改变了,可以很容易地修改这棵胜者树。只需要沿着从该结点到根结点的路径修改这棵二叉树,而不必改变其他比赛的结果 ...
分类:
编程语言 时间:
2016-12-06 20:21:51
阅读次数:
191
外部排序: 一、定义问题 外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序 整个文件的目的。外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装入内存的部分,分别把每一部分调入内存完成排序 ...
分类:
编程语言 时间:
2016-09-03 23:58:05
阅读次数:
441
Compaction有两种类型: (1)minor compaction:属于轻量级。将多个小的storefile文件重写为数量较少的大storefile文件,减少存储文件的数量,实际上是个多路归并的过程。它不会删除被标记为“删除”的数据和以往过期的数据,并且执行过一次minor合并操作后,还会有多 ...
分类:
系统相关 时间:
2016-08-04 00:02:02
阅读次数:
275
问题描述
输入:一个最多包含n个正整数的文件,每个数都小于n,其中n=107。如果在输入文件中有任何正数重复出现就是致命错误。没有其他数据与该正数相关联。
输出:按升序排列的输入正数的列表。
约束:最多有1MB的内存空间可用,有充足的磁盘存储空间可用。运行时间最多几分钟,运行时间为10秒就不需要进一步优化。
程序设计与实现概要:应用位图或位向量表示集合。可用一个10位长的字符...
分类:
编程语言 时间:
2016-05-18 19:29:41
阅读次数:
195
题目链接:点击打开链接
思路:多路归并。 用贪心的规则, 我们先考虑两个数组的情况, 如果将两个数组从小到大排序, 那么我们先将数组a的所有元素加上数组b的最小的元素, 然后放入优先队列。 因为是事先排好序的, 所以其中肯定有一个是最小的,那么当这个数取出来之后, 如何保证队列头上时次小的呢? 我们发现, a数组的所有元素都用上了, 而且是和b数组中最小的数相加得到的, 所以, 当a[0]+b[...
分类:
其他好文 时间:
2016-04-29 16:18:04
阅读次数:
124