我正在尝试使用合并排序为大学作业实现(在C中)数据库的外部排序算法。可用内存为buffSize
块。我发现此链接非常有用:
http://web.eecs.utk.edu/~huangj/CS302S04/notes/external-sorting2.html
但我的问题是关于伪代码的这一行,在算法的第一阶段:
sort array a using an in-memory algorithm like quicksort
如果我没有权利使用除buffSize
空间以外的任何内存,那么我无法分配链接的a
数组,如何对包含在其中的记录进行排序这些块(然后将它们存储在临时运行文件中),使用内存中的排序过程(例如快速排序)。在这种情况下我的记录不会在连续的数组中,而是在非连续的内存中找到块,我不能直接应用qsort。任何提示?
答案 0 :(得分:2)
外部排序的一般方法是:
你没有详细说明buffSize
内存块意味着什么,但是有一个数组a
可以在内存中排序。因此,您将数据读入数组。您使用quicksort对数组进行排序。然后将数组写入磁盘。重复阅读,排序,写入,直到没有更多的输入数据。然后进行合并......