本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7592433
建立时间:2006年5月29日




[算法]堆的应用
软件技术

lhwork 发表于 2006/12/11 11:18:17

一个文件中包含了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; }


阅读全文(3107) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.063 second(s), page refreshed 144774751 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号