我想實現(在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。任何提示?
如果要排序的數組不是連續的,並且如果不允許使用臨時數組,那麼你是對的,你不能使用'qsort'。你必須編寫你自己的排序程序,將差距考慮在內。 –
爲什麼它是非連續的?我已經實現了外部合併排序,並且內存緩衝區是連續的。 – usr