난 해시 테이블에 대해 배우기 시작했는데 삽입하는 법은 알고 있지만 검색 방법은 이해하지 못했다. 키해시 테이블을 검색하려면 어떻게해야합니까?
int Hash (int key) {
return key % 10; //table has a max size of 10
}
선형 충돌 해결을 위해 프로빙 해싱
:이 내가 떨어져이 질문을 내놓고됩니다 알고리즘이다.
1, 11 및 21 키를 사용하여 삽입을 두 번 호출한다고 가정합니다. 이렇게하면 3 개의 키 모두에 대해 슬롯 1이 반환됩니다. 충돌 해결 후 테이블은 슬롯 1, 2 및 3에 1, 11 및 21 값을 갖게됩니다. 이것은 삽입에 대한 나의 이해와 함께 일어날 것이라고 가정합니다.
키 11과 21을 검색하면 어떻게 슬롯 2와 3을 얻을 수 있습니까? 내가 읽었던 해쉬 테이블 검색은 원하는 슬롯에 도착할 때를 제외하고는 삽입하는 것과 똑같은 것을해야한다. 그 슬롯에 값을 넣는 대신에 그 값을 반환한다.
글자 그대로 받아 들여 동일한 알고리즘을 적용하면 키 11을 검색하면 슬롯 1에서 시작하여 빈 슬롯을 찾을 때까지 계속 탐색하므로 앞으로 슬롯 4에 도착합니다. 비록 그것이 비어 있지 않기 때문에 그것은 내가 원하는 것 일지라도 그것은 슬롯 2에서 멈추지 않을 것입니다.
별도의 체인을 사용하더라도이 문제로 어려움을 겪고 있습니다. 3 개의 키는 모두 슬롯 1에 저장되지만 동일한 알고리즘을 사용하여 검색하면 링크 된 목록의 노드가 아닌 슬롯 1을 반환합니다.
내가 키 자체를 사용할 수 없다고 나는 생각하지 못했습니다. – TreeTree
응? 나는 너의 질문에 너무 지나쳤다. –