首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

个数组的最大k个数java

问题描述:求个数组的最大k个数,如,{1,5,8,9,11,2,3}的最大三个数应该是,8,9,11 问题分析:     1.解法:最直观的做法是将数组从大到小排序,然后选出其中最大的K个数,但是这样的解法...2.解法二:不对前K个数进行排序,回忆快排的算法中,那个partition函数,就是随机选择数组中的个数,把比这个数大的数,放在数组的前面,把比这个数小的数放在数组的 后面,这时想如果找出的随机数,最终位置就是...K,那么最大的K个数就找出来了,沿着这个思路思考问题,但是这个函数,最后的索引位置并不定是K,可能比K大也可能比K小,我们把找出的数组分成两部分sa,sb,sa是大的部分,sb是小的部分,如果sa的长度等于...,再从sb中找到,k-m个最大的元素,组合起来就是最终的结果,那么这时把问题简化成从sb中找k-m个最大的元素,所以总体来说这是个递归的过程,虽然复杂大也是O(n*logn)但是,每次数据量都会减少所以会更加的快...3.解法三:是利用堆排序,建立个K阶最大堆,然后数据个个插入队当中,那么插入队的时间复杂度是O(logK),适合数据量比较大的时候,用堆的效果更加好。

79720
您找到你想要的搜索结果了吗?
是的
没有找到

Java 的字节流文件读取

Java 的 IO 流就是用于读写文件内容的种设计,它能完成将磁盘文件内容输出到内存或者是将内存数据输出到磁盘文件的数据传输工作。...Java IO 流的设计并不是完美的,设计了大量的类,增加了我们对于 IO 流的理解,但无外乎为两大类,类是针对二进制文件的字节流,另类是针对文本文件的字符流。...read 方法同时又规定当读取到文件的末尾,即文件没有下个字节供读取了,将返回值 -1 。...事实上,文件读取是不可能重置回头读取的,而般都是将标志位置到重置点之间所有的字节临时保存了,当调用 reset 方法时,其实是从保存的临时字节集合进行重复读取,所以 readlimit 用于限制最大缓存容量...首先,这两个属性是必须的: protected byte buf[]; //这里的 count 表示的是 buf 中有效字节个个数 protected int count; 构造器: public ByteArrayOutputStream

1.6K70

Java 读取文件

JAVA有多种读取文件的方式,其中比较深层次的原理在我的另外篇文章分析过:JDK核心JAVA源码解析(5) - JAVA File MMAP原理解析,那么,我们有哪些方式去读取个文件的内容呢?...从ClassPath中读取文件 直接从项目的classpath(maven的话src/main/resource编译之后也会存在于classpath下)读取: InputStream inputStream...resultStringBuilder.append(line).append("\n"); } } System.out.println(resultStringBuilder.toString()); 注意定要关闭...JDK7中的读取文件内容的方式 利用Path对象省略了各种StreamReader,同时原生自带读取所有内容到内存的方法,在读取比较小的文件所有内容时我们可以考虑这么做: Path path = Paths.get...JDK8中的读取文件内容的方式 JDK8继续优化了这块的代码,引入了Stream相关框架,同时针对文件读取也能转化为Stream操作: Path path = Paths.get(getClass().

3.9K20
领券