2017-07-29 2 views
0

最近データ構造について学び始めました。私は本によると、二次探査法を使用してハッシュテーブルを書いた。コードは次のとおりです。このハッシュテーブルの要素が期待どおりにソートされないのはなぜですか?

私はそれを数回確認した後、データを追加しました。私はハッシュテーブルが順序付けられていないが、その中の要素は特定の順序でなければならないと思う。

まず、データの次のセットが試験される:

public class MainTest { 
    public static void main(String[] args) { 
     HashTable<Integer> table = new QuadraticProbingHashTable<>(); 
     for (int i = 60; i <= 90; i++) { 
      table.add(i); 
     } 
     System.out.println(table); 
    } 
} 

、これはソートされている結果である:

[60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90] 

そしてIは、第一の試験DATAS 10を添加し、再度試験しました:

public class MainTest { 
    public static void main(String[] args) { 
     HashTable<Integer> table = new QuadraticProbingHashTable<>(); 
     // for (int i = 60; i <= 90; i++) { 
     for (int i = 70; i <= 100; i++) { 
      table.add(i); 
     } 
     System.out.println(table); 
    } 
} 

しかし、結果は次のようになりました。

[97, 98, 99, 100, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96] 

これは混乱しています。

私が書いたコードに問題があるか、その他の理由があるかどうかはわかりません。誰かが私のためにそれをチェックできますか?私はちょうどデータ構造に触れました。

+0

作業を開始したら[codereview.se]に投稿してください。ここには無関係なコードがたくさんあるようです。 –

答えて

7

ハッシュテーブルは、ソートされたデータ構造として使用されるものではありません。それらはクイックルックアップのために設計されており、最速のルックアップを可能にする順序で要素を配置します。

テーブルが一点でソートされていた場合、これは単に偶然でした。

関連する問題