ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 패스트 캠퍼스 챌린지 13일차 - 자료구조 해쉬테이블 #4
    카테고리 없음 2021. 9. 18. 20:15

    목차

    1. Collision 해결 알고리즘
    2. 간단한 구현

    1.Collision 해결 알고리즘

    • Linear Probing기법
      • 폐쇄 해슁 또는 Close Hashing 기법 중 하나: 해쉬 테이블 저장공간 안에서 충돌 문제를 해결하는 기법
      • 충돌이 일어나면, 해당 hash address의 다음 address부터 맨 처음 나오는 빈공간에 저장하는 기법
        • 저장공간 활용도를 높이기 위한 기법

     

    2.간단한 구현

    hash_table = list([0 for i in range(8)])
    
    def get_key(data):
        return hash(data)
    
    def hash_function(key):
        return key % 8
    
    def save_data(data, value):
        index_key = get_key(data)
        hash_address = hash_function(index_key)
        if hash_table[hash_address] != 0:
            for index in range(hash_address, len(hash_table)):
                if hash_table[index] == 0:
                    hash_table[index] = [index_key, value]
                    return
                elif hash_table[index][0] == index_key:
                    hash_table[index][1] = value
                    return
        else:
            hash_table[hash_address] = [index_key, value]
    
    def read_data(data):
        index_key = get_key(data)
        hash_address = hash_function(index_key)
        
        if hash_table[hash_address] != 0:
            for index in range(hash_address, len(hash_table)):
                if hash_table[index] == 0:
                    return None
                elif hash_table[index][0] == index_key:
                    return hash_table[index][1]
        else:
            return None

     

    https://bit.ly/37BpXiC

Designed by Tistory.