매번 자료를 번호 순대로, 이름 순대로 딱딱 정리하면서 저장하는 것이 좋을까요?
계속 자료가 추가되고, 삭제되고, 검색을 하고 있는 와중이라면, 계속 정리하면서 일을 하는 것은 되려 더 일을
고단하게 만들겁니다.
그런 상황에서는 딱 단순하게, 제목의 첫 글자를 기준으로 책장을 나눈 후에,
'가' : 가요사전 , 가족의 탄생 ...
'나' : 나라는 무엇인가, 나루토 ....
'다' : 다름이 중요하다. 다람쥐의 생태 ...
이런 식으로 책장에다가 대충 넣지 않을까요?
해시의 알고리즘 철학은 단순합니다.
" 정렬을 하지 않고, 최대한 빨리 넣고, 빨리 검색하자"
이전에 다룬 자료구조 알고리즘인 TREE 구조와의 중요한 차이는 바로 정렬의 유무입니다!
이 때까지 다루었던, BST tree, AVL tree, OBST tree는 순서를 꼭! 아는 것이 중요한 자료에서 빛을 발합니다.
예컨대, 계산 수식을 저장할 때 던지요.
해시는 자료에다가 INDEX를 부여하여, 저장하는 방식입니다.
구체적으로 해시 함수에 대해 알아가기 전에 이것만 압시다.
해시 알고리즘의 핵심은 어떻게 INDEX를 부여하는가? 에 있습니다.
인덱스의 부여 방식에 따라 해시 알고리즘은 정말 뛰어날수도, 걍 쓰레기가 될 수도 있습니다.