Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 同じ数字は2つ以上ない、という前提
- public class HashSearch2 {
- public static void main(String[] args) {
- int[] arrayOrigin = {10, 3, 14, 16, 2, 12}; // 要素に"0"がない配列
- int[] arrayHashed = new int[(int)(arrayOrigin.length * 1.5)];
- arrayHashed = hashArray(arrayOrigin, arrayHashed);
- for (int v : arrayHashed) {
- System.out.print(v + ",");
- }
- System.out.println();
- hashSearch2(arrayHashed, 12);
- hashSearch2(arrayHashed, 5);
- }
- public static int[] hashArray(int[] arrayO, int[] arrayH) {
- int k;
- for (int i = 0; i < arrayO.length; i++) {
- k = arrayO[i] % arrayH.length;
- while (arrayH[k] != 0) {
- k = (k + 1) % arrayH.length;
- }
- arrayH[k] = arrayO[i];
- }
- return arrayH;
- }
- public static void hashSearch2(int[] arrayH, int number) { // numberは探したい数
- int k = number % arrayH.length;
- while (arrayH[k] != 0) {
- if (arrayH[k] == number) {
- System.out.println("探している数" + number + "は、配列の" + k + "要素目です");
- return;
- } else {
- k = (k + 1) % arrayH.length;
- }
- }
- System.out.println("探している数" + number + "は、配列内に存在しません");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement