0

10000を超える大きな数のバケットソートを改善しようとしていますが、コードが大きな数でうまく機能しない理由はよくわかりません。サイズnの配列に対する私のバケットソートアルゴリズム:

  1. サイズnのリンクリストの配列を作成します
  2. 数値の範囲を計算する

  3. 各バケットの間隔を計算する

  4. バケットのインデックスを計算し、特定の数値を配置します(問題:数値から間隔を常に減算してインデックスを計算し、間隔を減算するたびにカウンターをインクリメントします。カウンターはインデックスです)この特定のインデックスの検索方法は、大規模な場合は非常に時間がかかると思います数字。バケットのインデックスの検索を改善するにはどうすればよいですか?

PS配列を前処理して、配列の最小数と最大数を見つける方法があると聞きました。次に、最小値から特定の数値を引いてインデックスを計算します。index=number-min。インデックスを計算するという考えはまったくわかりませんでした。質問:1。これはインデックスを見つけるための効率的な方法ですか?2.サイズ4、番号31、34、51、56の配列がある場合、どのように処理しますか?31はバケット0に行き、34はバケット3に行きます、51と56はどうですか?3.インデックスを計算する他の方法はありますか?

4

1 に答える 1

0

除算を使用すると、インデックスをすばやく見つけることができます。インデックス=値/間隔。最初の間隔が0ではなく'min'で始まる場合は、分子として(value-min)を使用します。

于 2011-11-21T22:00:39.357 に答える