双向链表排序算法 一道java面试题,20亿数字的文本排序,如何取前100?
浏览量:2184
时间:2021-03-11 12:20:35
作者:admin
一道java面试题,20亿数字的文本排序,如何取前100?
因为这是一个Java问题,所以这是典型的TOPK问题。首先取前100个数字构建一个最小堆,然后依次从堆的顶部插入剩余的数字,同时调整堆。堆中最后100个元素就是结果。空间复杂度为k,时间复杂度为nlogk
首先,它是一种排序算法。排序算法是将无序数据组合转化为有序数据组合。有序数据组合的最大优点是定位和采用数据时会非常方便,因为数据是有序的,这样可以避免代码设计中很多不必要的麻烦,因为无序的数据在推断数据之间的关系时会显得非常繁琐,快速排序就是排序之一,这与一般最坏情况不同,它比一般的排序方法节省更多的时间。这里一般的排序方法是指:冒泡、希尔、插入等常规排序方法。其实我比较喜欢插入,但是链表操作比较方便,因为它操作简单
实现单程链表相关操作的功能:1。创建新的链表。
2. 插入节点。
3. 删除节点。
4. Insert方法对链表进行排序(从小到大)。
5. 按选择方法排序链表(从小到大)。
6. 显示当前链表。0退出程序。有关代码,请参阅参考资料
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。