종류
- 일반 검색
- 최적화된 검색
- 속도가 비교적 빠르다.
- 정렬이 반드시 선행 되어야 한다.
논리
- 찾을 대상을 설정한다.
- 인덱스 범위를 설정할 변수를 만든다.
- 변수의 초기 값은 반드시 배열(대상) 범위가 아닌 값으로 해야 한다.
- 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 + "]에 있습니다.");
}