質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

ハッシュ

ハッシュは、高速にデータ検索を行うアルゴリズムのことです。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

1233閲覧

ハッシュ探索法 コードレビューお願いします!

ooaai

総合スコア17

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

ハッシュ

ハッシュは、高速にデータ検索を行うアルゴリズムのことです。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

1クリップ

投稿2021/04/12 09:19

アルゴリズムの勉強をしています。ハッシュ探索法を自分なりに書いてみたのですがどうでしょうか??
処理の部分はメソッドにまとめたかったのですができませんでした。どのように記述すればうまくまとまるのでしょうか??またメソッドにすることなどがあれば教えていただきたいです。

import java.util.Scanner; class dot{ public static void main(String[] args){ int[] ary = {12, 25, 36, 20, 30, 8, 42}; int[] ary2 = new int[11]; for(int i = 0; i < ary.length; i++){ int k = ary[i] % ary2.length; //格納先の添字 for(int a = 0; a < ary.length; a++){ if(ary2[k] == 0){ //格納先に値がないか確認 ary2[k] = ary[i]; break; }else if(ary2[k] != 0){ k = (k + 1) % ary2.length; } } } Scanner scan = new Scanner(System.in); System.out.print("値を入力してください:"); int x = scan.nextInt(); int s = x % ary2.length; while(ary2[s] != 0){ //ハッシュの要素が0になるまで繰り返す if(ary2[s] == x){ System.out.println("格納場所は" + s + "番目です"); break; }else if(ary2[s] != x){ s = (s + 1) % ary2.length; } if(ary2[s] == 0){ System.out.println("見つかりませんでした"); } } } }

出力結果↓

値を入力してください:12 格納場所は1番目です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mather

2021/04/12 10:22

> どうでしょうか? 期待通りに動いていればいいんじゃないでしょうか。 あなた自身が現場のコードで気になる部分を質問してください。 > 処理の部分はメソッドにまとめたかったのですができませんでした。 「処理の部分」とは?「できませんでした」とは何が理解できていないのか?など整理して質問しましょう。 「うまい書き方」は人それぞれだと思うので、まずは自分自身で挑戦して書いてみるのをおすすめします。
kazuma-s

2021/04/12 15:03

入力する値が 13 の場合と 14 の場合で、結果の表示が異なりますね。
guest

回答1

0

ベストアンサー

まずは文章でやりたいことを組み立ててみてください。

  1. ハッシュを計算する
  2. 挿入位置を見つける
  3. 挿入する

になると思うので、それぞれをメソッドに分けてみると良くなるかと思います。
あとは、どこまでやりたいか次第かと思いますので、メソッドを分けたら次はクラス化などチャレンジしてみると良いかと思います。

投稿2021/04/12 12:19

takezoux2

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問