假如有一个应用,需要我们从多个日志文件中中获取时间最近的那些数据。
如果要把这些数据放入内存做内排序,内存是无法满足要求的。
那么就需要用到K路归并排序。
假如我们每一个日志文件中的数据都可以放入到内存,并且做内排序。
那么我们先把每个日志文件中的数据排好序。
我们的业务场景:20个日志文件,我现在需要获取最近的100条数据。
那么我在内存中建立一个大小为100的最小堆。
然后从每个日志文件中取前5个数据,来组成这个最小堆。经过HEAPIFY操作后,
最小堆的第一个元素就是最小的元素,将它输出。
同时,去取这个元素所在日志文件(这个是关键)的下一个元素。
然后继续操作,直到100个数据输出。