정렬되지 않은 배열에서의 탐색 방법
1) 순차 탐색
- 가장 간단하고 직접적인 탐색 방법
- 정렬되지 않은 배열의 항목들을 처음부터 마지막까지 하나씩 검사하여 원하는 항목을 찾아가는 방법이다
- 정렬되어 있지 않은 배열의 순차 탐색은 이해와 구현이 쉬움 그러나 배열이 많은 항목을 갖는 경우 매우 비효율적인 방법
- 비교횟수를 줄임으로써 순차 탐색을 개선 시킨다
- 리스트의 끝을 테스트하는 비교연산을 줄이기 위해 리스트의 끝에 찾고자 하는 키 값을 저장하고 반복문의 탈출 조건을 키 값을 찾을 때까지로 설정
- i 값이 리스트의 끝에 도달하였는지 매번 비교하지 않아도 되므로 비교연산의 수를 반으로 줄일 수 있다
- 따라서, 순차 탐색의 시간 복잡도 O(n) 이다
정렬된 배열에서의 탐색 방법
1) 순차 탐색
- 순차 탐색 중 키 값보다 큰 항목을 만나면 배열의 마지막까지 검색하지 않고도 탐색 항목이 없을음 알 수 있다
- 항목이 배열에 뒷부분에 존재해도 원래의 순차 탐색 방법 과 큰 차이가 없다
- 따라서, 시간 복잡도는 O(n) 으로 차이가 없다
2) 이진 탐색
- 배열의 중앙에 있는 값을 조사하여 찾고자 하는 항목이 왼쪽 또는 오른쪽 부분 리스트에 있는지 알아내어 탐색의 범위를 반으로 줄인다
- 이진 탐색 의 구현 방법은 재귀 호출 & 반복 호출 방식 이 있다.
- 따라서, 시간 복잡도는 O(logN)
3) 색인 순차 탐색(indexed Sequential Search)
- 인덱스라 불리는 테이블을 사용하여 탐색의 효율을 높이는 방법이다
4) 보간 탐색(interploation Search)
- 사전이나 전화번호부처럼 탐색 키가 존재할 위치를 예측하여 탐색하는 방법이다
References
Leave a comment