algorithm
[이진탐색]
수학소년
2023. 7. 30. 21:39
arr: 정렬된 상태
var start = 0;
var end = arr.length-1;
while (start <= end) {
var mid = parseInt((start + end) /2);
var midv = arr[mid];
if (target < midv) {
end = mid-1;
} else if (midv < target) {
start = mid+1;
} else {
answer = mid;
break;
}
}
parseInt는 소수점 버림이기 때문에
start <= mid < end
mid와 end는 절대로 같아 질 수 없음(단, 배열 길이가 1 보다 클때)
(배열 길이가 1 이면 start=mid=end긴 한데, while문 딱 한번 돌고 끝나버림)
- mid-1 <= end,
start <= end - start < mid,
start <= mid -1 <= end - start = mid,
end = mid-1 < start. 이 경우는 while밖으로 빠짐