当前位置:首页 > TAG信息列表 > java选择排序一道java面试题

java选择排序一道java面试题

java选择排序 一道java面试题,20亿数字的文本排序,如何取前100?

一道java面试题,20亿数字的文本排序,如何取前100?

因为这是一个java问题,所以这是典型的topk问题。首先取前100个数字构建一个最小堆,然后依次从堆的顶部插入剩余的数字,同时调整堆。堆中最后100个元素就是结果。空间复杂度是k,时间复杂度是nlogk

我们知道集合是无序的,我们可以使用treeset类。树集排序的规则是什么?1treeset支持两种排序方法:自然排序和自定义排序。默认情况下,treeset采用自然排序。自然排序:treeset调用compareto(o)ofsetelementsobjectj)方法来比较元素之间的大小关系,然后按升序排列集合中的元素。这种方法是自然分类。为什么collection元素有compareto方法?因为collection元素对象实现了comparable接口,所以这个方法返回一个整数值。当一个对象调用此方法与另一个对象进行比较时,例如:obb1。compareto(obb2),如返回0,则两个对象相等。如果该方法返回正整数,则obji1大于obji2。如果该方法返回负整数,则obji1小于obji2。因此,应使用树集集合进行自然排序。元素必须实现可比较的接口。但是,一些常见的java类实现了这个接口,比如stringcharacterbooleandatetimebigdecimalbiginteger,比如:treeset<string>ts=newtreeset<string>()ts.添加(“b”)ts.添加(“c”)ts.添加(“a”)系统输出打印(ts)结果:abc

java选择排序java自动排序的集合java有序集合


青海自考之家 彩湾网

  • 关注微信关注微信

猜你喜欢

微信公众号