0

27527-683
27525-1179
27525-1571
27525-1813
27525-4911
27526-1303
27526-3641
27525-3989
27525-4083
27525-4670
27526-4102
27526-558
27527-2411
27527-4342

これは、マップ内の文字列として宣言されているキーのリストであり
、昇順で並べ替えたいと考えています。
マップ内でバブル ソート メソッドを使用するにはどうすればよいですか?
キーの値はリストです。得るために:

27525-1179
27525-1571
27525-1813
27525-3989
27525-4083
27525-4670
27525-4911
27526-558
27526-1303
27526-3641
27526-4102
27527-683
27527-2411
27527-4342

4

2 に答える 2

1

ツリーで順序通りのトラバーサルを実行できるはずです。しかし、あなたがここで主張するなら、あなたは何をするでしょう.

keyList = yourTreeMap.getKeys();
for(i = keyList.length-1; i > 0; i--)
    for(j = 0; j < i; j++)
       if (keyList[j] > keyList[j+1]) keyList.swap(j, j+1);

あなたは言語を指定していないので、疑似コードを提示します。

于 2011-01-06T07:41:21.607 に答える
0

一般的には、通常と同じバブル ソート アルゴリズムを使用するだけです。キーと値の両方を調べて、キーと値の両方を調べて、最初にキーを比較し、それらが等しい場合は次に比較条件を微調整します。キーが一致しない場合は値を比較し、値の違いを使用してスワップの結果を取得するか、スワップしないでください。現実世界のシナリオでこれを使用している場合でも、バブル ソートは効率が悪いです。

ジョンは私の前に投稿を受け取りましたが、ネストされたループ内の if に複雑な条件が必要な場合を除いて、基本的に彼が書いたものは正しいように見えます。

if(key1<key2)
    keyList.swap(i,j)
else if(keyList[key1]<keyList[key2])
    keyList.swap(i,j)

もちろん、これらのキー/値が実際にどのように抽出/使用されるかは、質問やタグに欠けている言語によって異なります。

于 2011-01-06T07:49:22.077 に答える