본문 바로가기

알고리즘

[알고리즘] 탐색 알고리즘

종류

  • 일반 검색
    • 속도가 비교적 느리다.
  • 최적화된 검색
    • 속도가 비교적 빠르다.
    • 정렬이 반드시 선행 되어야 한다.

논리

  • 찾을 대상을 설정한다.
  • 인덱스 범위를 설정할 변수를 만든다.
  • 변수의 초기 값은 반드시 배열(대상) 범위가 아닌 값으로 해야 한다.
    • JAVA에서는 배열에 음수 값이 없기 때문에 음수 값으로 설정한다.
      • 대상이 없다면 범위 습득이 불가능하거나 예기치 않은 결과가 나올 수 있기 때문이다.
  • 찾을 데이터를 기준으로 비교하며 찾아나간다.

예제

  • 배열에 1 ~ 10의 숫자가 랜덤으로 5개 들어있다.
  • 숫자 2와 그 인덱스 번호를 찾고자 한다.
  • 인덱스 0번부터 대조하여 2가 존재하는지 확인한다.
  • 일치하는 값이 있다면 그 인덱스 번호를 기록하고 대조를 멈춘다.

예제 코드

//우리가 찾을 정수
int key = 2;

//우리가 찾을 정수가 존재하는 위치.index
//검색 시 초기화 값은 "대상의 범위가 아닌 값"으로 해야한다.
//자바의 배열에는 음수 값이 존재하지 않는다.
int keyIndex = -1;

//배열의 길이만 큼 반복
for(int i=0;i<datas.length;i++) 

{

    //찾는 값과 일치하다면
    if(key == datas[i]) 
    {

        //인덱스 번호를 기록
        keyIndex=i;

        //반복문에서 탈출
        break;

    }

}

//찾는 값이 있다면
if(keyIndex > -1) 
{

    //문구 출력
    System.out.print("찾는 값 " + key + "는 [" + keyIndex + "]에 있습니다.");

}

'알고리즘' 카테고리의 다른 글

[알고리즘] 선택정렬  (0) 2023.11.29
[알고리즘] 버블정렬  (0) 2023.11.28
[알고리즘] 삽입정렬  (0) 2023.11.28
[알고리즘] 최소 값 찾기 알고리즘  (0) 2023.11.27
[알고리즘] 최대 값 찾기 알고리즘  (0) 2023.11.27