카테고리 없음

c/c++ 해시 검색 (hash search, Linear search)

Canyi 2022. 9. 15. 10:11

memset : hashTable을 가리키는 메모리를 hashTable의 길이만큼 설정

 

함수로 작성 예시

 

문제점

배열이 비었을때만 bucket이 들어오기 때문에 3이 입력되고나서 33이 입력되서 1의 자리의 3이 중복되서 33의 bucket이 누락됬다.

**해결방법은 solt을 늘린다?

 

insert 함수에 for문 동적으로 수정
find 함수 for문 동적으로 수정
SL이 3이므로 31을 검색할 경우 성공!
SL이 3이므로 검색실패...

그러면 Bucket충돌을 방지하기 위해 SL을 항상 정적으로 늘려야 될까? 

 

hash 충동 해결하는 방법 

선형으로 테스틀을 위해 SL을 1로 설정함

배열의 길이는 총 10이고 11,21,31을 입력했을 경우 계속 다음으로 밀려서 31이 2번 배열에 들어감

참고문헌

http://soen.kr/lecture/ccpp/cpp2/20-1-3.htm

 

혼자 연구하는 C/C++ by WinApi

20-1-다.해시 해시(Hash)는 자료를 입력할 때부터 검색하기 쉬운 위치에 삽입하는 방법이다. 따라서 해시는 검색 방법이라기보다는 빠른 검색을 위해 자료를 관리하는 기법이라고 볼 수 있다. 실생

soen.kr