// index = 0 1 2 3 4 5 6 7 8 9
int[] data = {10,20,30,40,50,60,70,80,90,100};
// 70의 index 값은? --> 6
// - 순차검색 : 맨 앞부터 순서대로 검색 (성능↓) --> 데이터의 위치에 따라 성능이 들쑥날쑥함 (데이터량이 적을 때 사용)
int sdata = 70;
int pos=-1; // 초기값 : (-1 : 실패의 의미**)
for (int i = 0; i < data.length; i++) {
if (data[i] == sdata) {
pos=i;
break; // 반복문 탈출
} // 순차검색 if_
} // i_
// 출력
if (pos != -1) {
System.out.println("검색성공");
System.out.println("pos = " + pos); // 6
} else {
System.out.println("검색실패");
} // 출력 if~else_
데이터를 원소의 개수의 중앙에서부터 검색한다.
💡조건 : 오름차순 정렬이 우선되어야 사용할 수 있다.
반복 횟수를 예적하기 어렵기 때문에 for문을 사용하기 어려움
while문 사용 : 첫 조건은 반드시 실행(low high 조건실행)
int[] data = {10,20,30,40,50,60,70,80,90,100};
int sdata=70; // 찾고자하는 수
int low=0;
int high=data.length-1; // 9
int middle;
int pos=-1;
while (low <= high) {
middle=(low+high)/2;
if(data[middle] == sdata) {
pos=middle;
break;
} else if (data[middle] < sdata) { // 중앙의 값 보다 찾고자하는 수가 더 클 경우
low=middle+1; // low를 middle 뒤로 올린다.
} else { // LEFT
high=middle-1; // high를 middle 앞으로 내린다.
} // if~else_
} // while_
// 출력
if (pos != -1) {
System.out.println("검색성공");
System.out.println("pos = " + pos); // 6
} else {
System.out.println("검색실패");
} // 출력 if~else_