자료구조 2

[Algorithm] 버킷 리스트 없이 버킷정렬을 구현할 수 있을까?(feat. 계수 정렬, 향상된 버킷정렬)

버킷 정렬버킷 정렬은 원소들이 균등 분포(Uniform Distribution) 일 때 유용하게 사용할 수 있는 정렬 알고리즘입니다. 버킷 정렬 알고리즘의 대략적인 흐름은 다음과 같습니다.[a, b] 범위의 원소들을 [0, 1)의 범위로 매핑시켜 준다.각각의 원소들의 배열의 사이즈(n)를 곱하여 정수부만 취하여 인덱싱 해준다.(이때 0~n-1 인덱스 각각의 기댓값은 1로 균등하다.)버킷 리스트(리스트 배열)에 인덱싱 된 값들을 매핑하여 넣어준다.각각의 버킷을 부분 정렬한다.정렬된 원소들을 원래 리스트에 복사해 준다. 이러한 버킷 정렬의 시간 복잡도는 Θ(n)로 이론상 매우 뛰어나지만 다른 Θ(nlogn) 정렬 알고리즘보다 조금 느린 정도의 퍼포먼스를 보여줍니다. 왜냐하면 버킷 리스트를 생성하고 관리하는데..

개발/Algorithm 2024.07.14

[Data Structures] 리스트 - 배열 리스트

리스트란?가장 대표적이면서 기본적인 자료구조를 뽑으라면 리스트를 뽑을 수 있습니다. 리스트란 '줄 세워져 있는 데이터' 또는 '죽 늘어선 데이터'를 의미합니다. 예를 들어 쇼핑 목록 리스트, 고객 리스트 등 연속적으로 저장된 데이터 등을 예로 들 수 있습니다. 리스트의 작업이러한 리스트를 구현하려면 원소의 삽입이나 삭제 등의 작업을 구현해야 할 것입니다. 리스트의 기본적인 작업 목록을 ADT(추상 데이터 타입) 리스트로 나타내면 아래와 같습니다.i번째 자리에 원소 x를 삽입한다.i번째 원소를 삭제한다.원소 x를 삭제한다.i번째 원소를 알려준다.원소 x가 몇 번째 원소인지 알려준다.리스트의 사이즈(총 원소의 수)를 알려준다.리스트 구현이러한 리스트를 구현하는 방법에는 크게 배열에 원소들을 쭉 배치하는 방법..