3. 순환 알고리즘의 설계
적어도 1개의 base case, 즉 순환되지 않고 종료되는 case 있어야함
모든 case는 결국 base case로 수렴해야함
암시적 매개변수를 명시적 매개변수 로 바꿔라
순차 탐색
이 함수의 미션은 0~n-1 사이의 target을 검색 하지만 검색 구간의 시작 인덱스 0은 보통 생략. 즉, 암시적 매개변수 다.
[0~n-1] 까지 검색할건데
여기서 n-1은 매개변수 n으로 명시적 매개변수
0은 암시적 매개변수. 암묵적으로 0부터 검색해야지
// 순차 탐색
int search(int [] data, int n, int target) {
for(int i = 0; i<n; i+=1) {
if(data[i] == target) {
return i;
}
}
return -1;
}매개변수의 명시화: 순차 탐색
data[begin]에서 data[end] 사이에서 target을 검색 즉, 검색구간의 시작점을 명시적 으로 지정
0으로 암시 VS 시작 위치와 끝 위치를 명시
recursion을 작성시 명시하는 것이 기본적인 원칙
어떤 배열데이터에 0~n-1 사이의 타겟을 찾음
순차 탐색: 다른 버전
뒤에서부터 비교 해보기
mid를 기준으로 0~mid-1 돌고 못찾으면 mid+1~e 돌기
매개변수의 명시화: 최대값 찾기5
최대값 찾기 다른 버전 (틀림)
binary search
items[begin] 에서 items[end] 사이에서 target을 검색
이진 검색은 데이터가 정렬 되어있다는 전제
Last updated
Was this helpful?