過去 2 日間、具体的な解決策が見つからずに苦労してきた興味深い問題があります。次の入力配列を取るプログラムを C で作成しようとしています。
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: 次のように 3 番目の列に基づいて上記の配列をグループ化します (3 番目の列の値に基づいて、4 つの要素のタプル (つまり、各行) のバケット ソート:
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: 最後に、次のように各バケット内の 4 番目の列に基づいて要素を並べ替えます。
最終出力配列:
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でこれを行う方法を誰かが提案できますか?