Minwook-Shin's Tech Blog

해시 오버플로우 처리에 대하여 알아보기

오늘은 해시 테이블과 함수를 잘 선택하여 오버플로우가 발생하지 않도록 하는 방법을 알아보고자 합니다. 개요 최선으로 오버플로우가 발생하지 않고, 발생한다면 효율적으로 처리하는 방식을 채택해야 합니다. 해결하는 방식에는 충돌이 일어나 키값을 다른 빈 버킷을 찾아 저장하는 선형 개방 주소법과 여러개의 항목을 저장할 수 있도록 해시 테이블 구조를 변경...

해싱에 대하여 알아보기

오늘은 계산 검색 방식인 해싱에 대하여 작성해보려 합니다. 개요 산술적인 연산을 통해 키가 있는 위치를 계산하여 바로 찾아가는 계산 방식을 해싱이라고 합니다. 키값을 원소의 위치로 변환하는 함수를 해시 함수라고 하며, 해시 함수에 의해 계싼된 주소의 위치에 항목을 저장한 표를 해시 테이블이라 불립니다. 검색 방법 키값에 대하여 해시 함수를 계...

이진 정렬에 대하여 알아보기

오늘은 이진 정렬에 대하여 알아보겠습니다. 개요 자료의 가운데에 있는 항목을 키값과 비교하여 키값이 더 크면 오른쪽 부분을 검색하고, 키값이 더 작으면 왼쪽 부분을 검색하는 방법을 이진 탐색이라고 합니다. 가운데에 있는 값을 기준으로 왼쪽과 오른쪽으로 나누어 검색하므로 이분 탐색이라고도 합니다. 키를 찾을 때까지 이진 탐색을 재귀적으로 반복하며...

순차 정렬에 대하여 알아보기

오늘은 검색 방법중 가장 단순하고 쉬운 방법인 순차 검색을 알아보고자 합니다. 개요 일렬로 되어있는 자료를 처음부터 마지막까지 순서대로 검색하는 평범한 방법의 정렬인 순차 검색은 선형 검색이라고도 합니다. 주로 배열이나 링크드리스트로 구현된 순차 자료구조에서 원하는 항목을 찾는 방법입니다. 순차 검색은 검색해야하는 자료의 양에 따라 효율이 달라...

트리 정렬에 대하여 알아보기

오늘은 트리 정렬에 대하여 알아보고자 합니다. 개요 이진 탐색 트리를 이용하여 정렬하는 방법을 트리 정렬이라고 합니다. 정렬할 원소들을 이진 탐색 트리로 구성하고 중위 순회 방법을 사용하여 이진 탐색 트리의 원소들을 재귀적으로 꺼내어 오른차순으로 정렬합니다. 정렬되지 않은 자료들을 트리 정렬로 정렬하는 방식은 아래와 같습니다. 단계 ...

힙 정렬에 대하여 알아보기

오늘은 힙 정렬에 대하여 알아보겠습니다. 개요 이 정렬은 힙 자료구조를 이용하여 정렬하는 방법입니다. 힙에서는 항상 큰 원소가 루트 노드, 즉 최상위 노드가 되고, 삭제 연산을 하면 항상 루트 노드의 원소를 삭제하여 반환합니다. 이런 힙의 특징을 이용하여 최대 힙에서 원소의 갯수만큼 삭제 연산을 하면 내림차순을 구현할 수 있고, 최소 힙에서 원...

기수 정렬에 대하여 알아보기

오늘은 기수 정렬에 대하여 작성해보고자 합니다. 개요 분배 방식의 정렬 방식으로 정렬할 원소의 키값에 해당하는 버킷에 원소를 분배하였다가 버킷의 순서대로 원소를 꺼내는 방법을 반복하는 것을 기수 정렬이라고 합니다. 원소의 키를 표한하는 값의 기수만큼 버킷이 필요하고, 키값의 자릿수만큼 기수 정렬을 사용합니다. 10진수로 표현된 키값을 가진 원소들...