본문 바로가기

개인 과제/디버깅표 작성

[디버깅표] 이진탐색 코드에 대한 디버깅표 작성

코드 예제

// 크기가 5인 배열선언
int[] arr = new int[5];

// 배열에 데이터 넣기
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;

// 찾고자 하는 값
int key = 2;

// 찾고자 하는 값의 인덱스 번호
int keyIndex = -1;

// 배열의 시작 인덱스
int start = 0;

// 배열의 마지막 인덱스
int end = arr.length - 1;

// 탈출 할 때 까지 도는 반복문
while (start <= end) {

    // 중앙 인덱스를 설정
    int mid = (start + end) / 2;

    // 중앙 인덱스 값이 찾고자 하는 값이라면
    if (arr[mid] == key) {

        // 중앙 값 인덱스 저장
        keyIndex = mid;

        // 반복문 탈출
        break;

    }
    // 중앙 인덱스 값이 찾고자 하는 값보다 크다면
    else if (arr[mid] > key) {

        // 찾는 값이 왼쪽에 있다는 뜻이므로
        // 최대 인덱스를 중앙 인덱스의 왼쪽(-1) 인덱스로 잡는데
        end = mid - 1;

    }
    // 중앙 인덱스 값이 찾고자 하는 값보다 작다면
    else if (arr[mid] < key) {

        // 찾는 값이 오른쪽에 있다는 뜻이므로
        // 최대 인덱스를 중앙 인덱스의 오른쪽(+1) 인덱스로 잡는데
        start = mid + 1;

    }

}

// keyIndex가 초기 값 그대로라면
if(keyIndex == -1) {

    // 값이 존재하지 않는 것이다.
    System.out.println("찾는 값이 없습니다.");

}
else {

    System.out.println(arr[keyIndex]);    

}

디버깅표

key keyIndex start end start<=end mid arr[mid]==key keyIndex=mid arr[mid]>key end=mid-1 arr[mid]<key start=mid+1
2 -1 0 4 0<=4, T 2 3==2, F   3>2, T 1    
    0 1 0<=1, T 1 2==2, T 1