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("요소 발견됨");
      System.out.println("정렬된 배열 요소의 인덱스: \t" + retVal);
   }
}

출력 결과

만들고자 하는 배열의 크기를 입력하세요
5
배열의 요소를 입력하세요
30
20
5
12
55
정렬된 int 배열:
5 12 20 30 55
검색할 값을 입력하세요
12
요소 발견됨
정렬된 배열 요소의 인덱스: 1