当待排序数据内容大于内存容量时,需将待排序内容分块,要进行排序的分块传入内存,未处于排序状态的存入外存,
外存的读写时间是内存的百万倍,因此在内外存储器之间传输分块所消耗的 I/O 时间是大数据排序算法中影响性能
的主要因素。
本课题使用的排序算法,需要对待排数据进行多次遍历,一方面使内存使用率提高,
但 I/O 操作数,即影响排序时间的主要因素大大减少,在数据量较大时,可明显
达到减少总排序时间的目的。
在以海量数据为主要研究对象的领域中,二维表排序操作更是海量数据处理
技术的一个重要步骤。对于一个 m 条记录二维表,我们讨论 3 种排序算法。取其
中的 n 个列作为排序关键字,按照排序的优先等级(k 1 ,k 2 ,...,k n )组成 m*n 的待
排二维数组。
顺序排序:
类似一维数组的交换排序,将整行数据看作一个单位,每两条记录做一次对比,
直到最后一条记录被放到正确的位置。两两对比时,先对比两条记录的关键字
k 1 的值,如果不相同,则按规定顺序进行交换记录;如果值相同,再对比关键字
k 2 ,k 3 ...,k n 以此类推。
按列分组排序: :
首先对关键字 k 1 进行排序,得到二维表在 k 1 上的排序结果。然后对 k 1 的每个值
做一次分组,组内没有相同值时,则按规定顺序进行交换记录;有相同值时,每
组再对 k 2 ,k 3 ,...,k n 的值进行分组,以此类推。
优化参考方法:https://www.cnblogs.com/jueyoq/p/7900232.html
https://www.cnblogs.com/ygh1229/articles/9806398.html