0

日付の特定の文字列配列があります。形式はdd/mm/yyyy.

基数ソートで昇順で月と年で日付をソートしたいのですが、最終的に月の最大数に基づいてソートされるため、方法がわかりません

たとえば、次の配列があります: 16/04/2012 01/05/2013 01/02/2012 10/11/2012 01/12/2012

通常、並べ替え後の結果は次のようになります。

私が欲しいものは次のとおりです。

アルゴリズムがどのように機能するのかわからず、 1 つの基数ソートだけで作成する必要があるため、まだコードを作成していません。

4

2 に答える 2

1

基数ソートを 2 回適用する必要があります。最初は月、次に年です。基数ソートを 1 回だけ使用する場合は、年でソートする必要がありますが、同じ年の月は順序付けされません。おそらく、1 年内の月に別のアルゴリズムを適用するか、基数ソートをまったく使用しないこともできます。一度しかソートできない特定の理由はありますか?

于 2012-05-02T05:50:25.113 に答える
1

あなたが持っている表現ではなく、代わりに別のソートキーで日付をソートすることを考えてください。たとえば、日付が 01/02/2012 の場合、ソート キー 20120201 を作成します。これで、桁が最上位から最下位の順に並べられたので、ソート キーを数値として扱い、それらに基数ソートを適用できます。

必要に応じて、並べ替えキーを明示的に作成する必要はありませんが、適切な順序を強制するために、基数並べ替えのラウンドで数字を選択するコードを変更する必要があります。

于 2012-05-02T06:13:06.053 に答える