我有一個有趣的問題,在過去的2天裏我一直在努力,但沒有具體的解決方案。 我試圖寫在C程序,其採用以下輸入數組:根據C中的4個索引的元組對數組進行排序
1,1,5,5,
1,1,5,9,
2,2,6,2,
1,2,5,5,
1,3,6,6,
1,4,5,1,
4,1,5,6,
5,2,7,1,
1,1,6,0,
2,2,5,0,
步驟1:組根據這樣的(4個元素的元組桶排序的第三列中的上述陣列(即每行)的基礎上,第3列的值:
2,2,5,5
1,1,5,9,
1,2,5,5,
1,4,5,1,
4,1,5,6,
2,2,5,0,
2,2,6,2,
1,3,6,6,
1,1,6,0,
5,2,7,1
步驟2:
最終輸出陣列::
最後基於這樣每個桶中的第四列中的元素進行排序 2,2,5,0,
1,4,5,1,
2,2,5,5,
1,2,5,5,
4,1,5,6,
1,1,5,9,
1,1,6,0,
2,2,6,2,
1,3,6,6,
5,2,7,1
第1列和第2列中的元素在上述排序過程中不起任何作用。
我已經嘗試過各種技術,使用快速排序或桶排序,然後進行後續快速排序。沒有什麼比較合適的。 任何人都可以提出一個在C中使用適當的數據結構的方法。
這與在第3列和第4列組成實體的虛擬鍵上進行排序有何不同?這似乎不應該需要幾天才能考慮,除非我完全錯過了某些東西(這不會是第一次)。一個正確編寫的'qsort()'比較器和一個包含四個「值」的實體寬度(你從來沒有指定它們是'int','unsigned int','short'等等)將會/應該做很短的工作這個。 – WhozCraig