java 一道java面试题,20亿数字的文本排序,如何取前100?
浏览量:2786
时间:2021-03-20 05:58:57
作者:admin
一道java面试题,20亿数字的文本排序,如何取前100?
因为这是一个Java问题,所以这是典型的TOPK问题。首先取前100个数字构建一个最小堆,然后依次从堆的顶部插入剩余的数字,同时调整堆。堆中最后100个元素就是结果。空间复杂度为k,时间复杂度为nlogk
方法区(非堆):是所有线程共享的内存区,用于存储类信息、常量、静态变量、实时编译器编译的代码以及虚拟机加载的其他数据。Java堆:它是虚拟机管理的最大内存区域,也是所有线程共享的内存区域。它是在虚拟机启动时创建的。这个内存区域的唯一用途是存储对象实例,几乎所有的对象实例都分配内存。Java堆是垃圾收集器管理的主要领域。Java虚拟机栈:线程是私有的,其生命周期与线程相同。在执行每个方法时,将同时创建一个堆栈帧来存储局部变量表、操作数堆栈、动态链接和方法出口等信息。每个方法都会被调用,直到执行完成,这与虚拟机中从堆栈到堆栈输出进程的堆栈帧相对应。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。