1.10.2.4.1. 256M的内存如何对16g的数组进行排序
多路归并,因为没要求存储,只要求了内存,可以多路归并,加入每个元素都是 1M,则可以最多分成 256 组,然后进行归并。
具体描述:采用外部排序,先将16 g数组分成 256 M 一组,然后分别读入内存进行内部排序「比如说可以使用快排」,将这些组内元素全部排好序之后,然后运用败者树和置换-选择排序,进行多路归并,即可。
胜者树与败者树
胜者树和败者树都是完全二叉树,是树形选择排序的一种变型。每个叶子结点相当于一个选手,每个中间结点相当于一场比赛,每一层相当于一轮比赛。
不同的是,胜者树的中间结点记录的是胜者的标号;而败者树的中间结点记录的败者的标号。
胜者树与败者树可以在log(n)的时间内找到最值。任何一个叶子结点的值改变后,利用中间结点的信息,还是能够快速地找到最值。 在k路归并排序中经常用到。
胜者树与败者树参考 https://blog.csdn.net/whz_zb/article/details/7425152 http://c.biancheng.net/view/3453.html
https://blog.csdn.net/FX677588/article/details/72471357 https://www.jianshu.com/p/b8faa1affe17 https://www.cnblogs.com/tonychen-tobeTopCoder/p/5797002.html https://blog.csdn.net/xiezhi123456/article/details/87632559 https://blog.csdn.net/life_liver/article/details/8554133