1

こんにちは私はコードの安定した選択ソートに取り組んでおり、正しい結果を得ることができましたが、コードにコーナーケースがあるかどうかはわかりません。このようにソートしているデータ
a [0] = new Data (1、'd');
a [1] = new Data(2、'c');
a [2] = new Data(3、'a');
a [3] = new Data(4、'b');
a [4] = new Data(5、'd');
a [5] = new Data(6、'c');
a [6] = new Data(8、'a');
a [7] = new Data(9、'a');
a [8] = new Data(10、'a');

ご覧のとおり、数字でソートされており、文字でソートすることになっています。

したがって、私が使用したデータオブジェクトの種類のロジックは次のようになります。

最小の要素を見つけるループでは、最小の要素だけでなく、最小のintを持つ最小の要素も見つけます。そうすれば、要素の順序は同じままになります

正常に動作していますが、ここで見逃したコーナーケースはありますか?

例:iTunesを取り上げましょう。最初に曲のIDで並べ替え、その後名前で並べ替えます。私はそれがすべてを明確にすることを願っています

4

2 に答える 2

1

いいえ、あなたは何も見逃していません。これは、不安定なアルゴリズムを安定させるための標準的な手法です。全順序を課します。すべての同点は、入力順序である2番目のキーによって解決されます。ここで辞書式順序を正しく実装したと思いますが、説明から完全に明確ではありません。

于 2012-09-02T12:06:59.237 に答える
0

説明したのは、複合キーの並べ替えです。キーの最も重要な部分は文字であり、キーの最も重要でない部分は数字です。

これは私が安定ソートと呼ぶものではありません。2つのレコードのキーの値が同じである安定ソートでは、ソートされたシーケンスの最初のレコードが元のデータの最初のレコードですが、あなたの場合、最初のレコードが最小の番号です。

安定した並べ替えでは、番号が降順のデータを指定した場合、2つのレコードの文字が同じである場合、並べ替えられたデータの2つの最初のレコードは、番号が最も大きいレコードになります。入力データの最初のレコード。プログラムでは、2つの最初のレコードは、番号が最も小さいレコードになります。

于 2012-09-02T12:08:26.717 に答える