배열
메모리 상에 원소를 연속하게 배치한 자료구조
배열의 성질
- O(1)에 k번째 원소를 확인/변경 가능
- 추가적으로 소모되는 메모리의 양(=overhead)가 거의 없음
- Cache hit rate가 높음
- 메모리 상에 연속한 구간을 잡아야 해서 할당에 제약이 걸림
시간복잡도
- 임의의 위치에 있는 원소를 확인/변경 = O(1)
- 원소를 끝에 추가 = O(1)
- 마지막 원소를 제거 = O(1)
- 임의의 위치에 원소를 추가/임의 위치의 원소 제거 = O(N)
- 추가의 경우 그 뒤의 원소들을 전부 한 칸씩 밀어야 함.
- 삭제의 경우 그 위의 원소들을 한 칸씩 땡겨와야 함.
연결 리스트
원소들을 저장할 때 그 다음 원소가 있는 위치를 포함시키는 방식으로 저장하는 자료구조
연결 리스트의 성질
- k번째 원소를 확인/변경하기 위해 O(K)가 필요함
- 임의의 위치에 원소를 추가/임의 위치의 원소 제거는 O(1)
- 원소들이 메모리 상에 연속해있지 않아 Cache hit rate가 낮지만 할당이 다소 쉬움
연결 리스트의 종류
- 단일 연결 리스트
- 각 원소가 자신의 다음 원소의 주소를 들고 있는 연결 리스트
- 이중 연결 리스트
- 각 원소가 자신의 이전 원소와 다음 원소의 주소를 둘 다 들고 있음
- 원소가 가지고 있어야 하는 정보가 1개 더 추가되니 메모리를 더 쓴다
![배열, 연결리스트 - algorithm[1]](/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252Fd715e42f-5ece-4a62-9155-8ef2d8d7d58b%252F5fa906d6-5e30-48ce-8914-9dd8f8f9b8f7%252F%2525E1%252584%252589%2525E1%252585%2525B3%2525E1%252584%25258F%2525E1%252585%2525B3%2525E1%252584%252585%2525E1%252585%2525B5%2525E1%252586%2525AB%2525E1%252584%252589%2525E1%252585%2525A3%2525E1%252586%2525BA_2024-04-30_%2525E1%252584%25258B%2525E1%252585%2525A9%2525E1%252584%252592%2525E1%252585%2525AE_8.50.30.png%3Ftable%3Dblock%26id%3Db72fdaa4-9110-44e9-8849-039345c75c66%26cache%3Dv2&w=3840&q=75)