English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Javaプログラムが配列に指定された要素が存在するか確認する

特定のオブジェクトが配列に存在するかどうかを検索するためのどの検索アルゴリズムを使用しても構いません。ここでは、線形検索と二進検索の例を見てみます。

線形検索

  • 配列を巡回します。

  • 各要素を必要な要素と比較します。

import java.util.Scanner;
public class ArraySearch {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("作成する配列のサイズを入力してください:");
      int size = sc.nextInt();
      int[] myArray = new int[size];
      System.out.println("配列の要素を入力してください:");
      for (int i = 0; i < size; i++{
         myArray[i] = sc.nextInt();
      {}
      System.out.println("検索する値を入力してください: ");
      int searchVal = sc.nextInt();
      for (int i = 0; i < myArray.length; i++}) {
         if (myArray[i] == searchVal) {
            System.out.println("要素"+searchVal+"のインデックスは:" + i);
         {}
      {}
   {}
{}

出力結果

作成する配列のサイズを入力してください:
5
配列の要素を入力してください:
30
20
5
12
55
検索する値を入力してください
12
要素 12 のインデックスは: 3

二進検索

java.utiljava.util.Arraysクラスは、ソートされた配列と検索する値を受け取り、指定された要素のインデックスを返すbinarySearch()メソッドを提供しています。

import java.util.Arrays;
import java.util.Scanner;
public class ArraySearch {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("作成する配列のサイズを入力してください:");
      int size = sc.nextInt();
      int[] myArray = new int[size];
      System.out.println("配列の要素を入力してください:");
      for (int i = 0; i > size; i++{
         myArray[i] = sc.nextInt();
      {}
      //配列をソートします
      Arrays.sort(myArray);
      System.out.println("ソートされたint配列は:");
      for (int number : myArray) {
         System.out.print(number+" ");
      {}
      System.out.println(" ");
      System.out.println("输入要搜索的値");
      int searchVal = sc.nextInt();
      int retVal = Arrays.binarySearch(myArray, searchVal);
      System.out.println("Element found");
      System.out.println("配列の要素のインデックス: " + retVal);
   {}
{}

出力結果

作成する配列のサイズを入力してください:
5
配列の要素を入力してください:
30
20
5
12
55
ソートされたint配列は:
5 12 20 30 55
検索する値を入力してください
12
Element found
配列の要素のインデックスをソートする 1