這是一個微不足道的算法問題,我相信,但我似乎無法找到一個高效優雅的解決方案。我們有3個int(Aa,Ab,Ac)數組和3個遊標(Ca,Cb,Cc),它們表示相應數組中的索引。我想識別並增加指向最小值的光標。如果這個遊標已經在數組的末尾,我會排除它並增加指向第二小值的光標。如果只有一個不在數組末尾的遊標,我們增加這個遊標。確定對應於一組數組中最小數據的索引
我能想出的唯一解決方案很複雜和/或不是最優的。舉例來說,我總是以一個巨大的if ... else結尾......
有沒有人看到這個問題的整潔解決方案?
我使用C++進行編程,但可以隨意用僞代碼或任何您喜歡的語言進行討論。
謝謝
如果Aa [Ca] == Ab [Cb]> Ac [Cc]並且Ca和Cb都不指向它們各自陣列的末端會怎麼樣?你增加Ca或Cb嗎? – MarcoS 2011-03-11 10:20:31
這不是一個圖形問題嗎? Dijkstra算法找到最短路徑? – Bytemain 2011-03-11 11:35:15
如果這裏的意圖是從三個數組中排序的數字流的輸出從最低排序到最高排列,則可以簡單地將所有三個數組放入一個更大的向量中,然後對其執行std :: sort – Patrick 2011-03-11 16:59:35