为什么快速排序不适合用链表 一道java面试题,20亿数字的文本排序,如何取前100?
一道java面试题,20亿数字的文本排序,如何取前100?因为这是一个Java问题,所以这是典型的TOPK问题。首先取前100个数字构建一个最小堆,然后依次从堆的顶部插入剩余的数字,同时调整堆。堆中最
一道java面试题,20亿数字的文本排序,如何取前100?
因为这是一个Java问题,所以这是典型的TOPK问题。首先取前100个数字构建一个最小堆,然后依次从堆的顶部插入剩余的数字,同时调整堆。堆中最后100个元素就是结果。空间复杂度为k,时间复杂度为nlogk
首先,它是一种排序算法。排序算法是将无序数据组合转化为有序数据组合。有序数据组合的最大优点是,当你定位和采用数据时,会非常方便,因为数据是有序的,所以你可以避免代码设计中很多不必要的麻烦,因为当你推断数据之间的关系时会显示无序的数据快速排序是一种排序,在最坏的情况下,它与其他排序方法没有什么不同,但在最好的情况下,它将比一般的排序方法节省更多的时间。这里的一般排序是指:bubble、hill、insert等常规排序方法。其实我比较喜欢插入,但是对于链表操作来说比较方便,因为操作起来比较容易