피보나치 탐색
본 자료는 1페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
해당 자료는 1페이지 까지만 미리보기를 제공합니다.
1페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

피보나치 탐색에 대한 보고서 자료입니다.

목차

이진 탐색과 비슷하여 이미 정렬된 데이터의 집합들로부터 특정한 키를 찾는 방법    피보나치 탐색은 피보나치 수열을 이용하여 다음 탐색 구간을 정함    피보나치 수열 : 1, 1, 2, 3, 5, 13, 21, 34, ...         (단,  )    피보나치 탐색의 과정 : 배열 에 오름차순으로 정렬된 데이터의 개수가 이라 가정  ① 초기화 : ②    만일 이면 ③으로 간다만일 이면 ④로 간다만일 이면 탐색 완료③   만일 이면 는 배열 안에 없다만일 이면 로 정하고 ②로 간다④   만일 이면 는 배열 안에 없다만일 이면 로 정하고 ②로 간다

본문내용

로 수행 속도가 다소 떨어질 수 있음


비교할 키의 위치 계산을 할 때 이진탐색처럼 나눗셈을 사용하지 않고덧셈과 뺄셈을 사용함으로서 평균 검색 효율을 높일 수 있음




피보나치 탐색의 구현



public void fibonacciSearch( int A[ ], int size, int key ) {
int tmp, index, adj, fmin2, fmin3;
tmp = fiNum(size); adj = size - fib(tmp);
index = fib(tmp - 1); fmin2 = fib(tmp - 2); fmin3 = fib(tmp - 3);
if (key > A[index]) index = index + adj;
while (index >= 0 && index < size) {
if (key == A[index]) return(index);
else if (key < A[index]) {
index = index - fmin3; tmp = fmin2;
fmin2 = fmin3; fmin3 = tmp - fmin3; }
else { index=index+fmin3; fmin2=fmin2-fmin3; fmin3=fmin3-fmin2; }
}
return(-1);
}
public void finum (int num) {
int I, p, q, tmp;
if (num == 0) return (0);
if (num == 1) return (1);
p = 0; q = 1;
for (i=1; p+q <= num; I++) { tmp = q; q += p; p = tmp; }
return(i);
}
  • 가격1,000
  • 페이지수5페이지
  • 등록일2012.03.13
  • 저작시기2008.12
  • 파일형식한글(hwp)
  • 자료번호#784137
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니