【算法】堆的应用
来源:互联网 发布:小学女生内衣淘宝 编辑:程序博客网 时间:2024/05/24 06:36
一个文件中包含了1亿个随机整数,如何快速的找到最大(小)的100万个数字?这类问题其实就是“优先树”算法,用堆(Heap)很容易解决。首先用含100万个数字的数组组成堆。从文件间读取数字,并插入到Heap中。如果 Heap已经满了,则删除根节点,并重整;直到所有的数字均处理完毕。
堆排序是Heap的副产品,其实它大部分时间是用在“优先决策”上,上面的例子只是其中之一,其他场所比如操作系统的任务调用、优先队列等。
- public static Comparable[] findMin(int count, String fileName) {
- Heap heap = new Heap(count);
- try {
- BufferedReader br = new BufferedReader(new FileReader(fileName));
- String line;
- while((line = br.readLine()) != null) {
- Integer number = Integer.valueOf(line);
- if(heap.isFull())
- heap.delete();
- heap.insert(number);
- }
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (NumberFormatException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- Comparable[] ret = new Comparable[count];
- int index = count - 1;
- while(!heap.isEmpty()) {
- ret[index--] = heap.delete();
- }
- return ret;
- }
- 【算法】堆的应用
- 堆排序算法二(堆排序算法的应用)
- 算法导论读后感-之堆,堆排序,堆排序的应用
- java.util.TaskQueue的最小堆排序算法的应用
- 堆排序算法及其应用
- 【算法】堆排序以及应用
- 算法导论:堆排序的应用---优先级队列
- 算法导论之堆的应用---优先队列
- 堆的应用
- 堆的应用
- 【poj3253】堆的应用
- 【数据结构】堆的应用
- 堆的应用:Sequence
- 堆的应用
- 堆的应用
- 堆串的应用
- 堆的应用
- 堆的简单应用
- 【算法】排序算法
- Delphi SendKeys.Pas
- JFreeChart中柱状图的详细设置
- 【算法】二叉树
- ln 硬链接与软链接的主要区别
- 【算法】堆的应用
- event和delegate的总结
- Linux SHELL if 命令参数说明
- dbhelper数据操作类
- 精华:用C#编写ActiveX控件
- FTP 用法的几个问题:
- DWRUtil.addOptions有5种模式
- 最好的免费软件
- Ubuntu常用命令