Arrays
- 배열은 선언시 크기만큼 공간을 메모리에 미리 예약/할당
메모리 관점에서 배열
1. volatile(휘발성)
- RAM(Random Access Memory)
- 컴퓨터를 끄면 삭제
- 속도가 빠름
- 요청하는 주소의 데이터에게 바로 접근 가능
2. non-volatile(비휘발성)
- 하드 드라이브
- 컴퓨터를 껐다 켜도 그대로 존재
Time Complexity(시간복잡도)
- 데이터 구조의 오퍼레이션 혹은 알고리즘이 얼마나 빠르고 느린지 측정
- 기준: 단계(steps)
1) Read: 인덱스 값으로 데이터를 얻음
-> 많은 데이터를 읽을 때 가장 빠름
2) Search: 검색 값의 존재 여부 확인을 위해 모든 데이터와 순차적으로 비교 필요
-> 데이터 양, 데이터의 위치에 따라 검색 수행 시간이 다름
3) Add/Insert
- 배열의 끝에 추가할 경우: 빠름
- 중간에 추가: 보통 -> 추가한 위치 뒤의 데이터를 이동
- 맨 앞: 느림 -> 모든 데이터를 이동
- 이미 꽉 찬 배열에 추가: 최악 -> 더 큰 배열에 카피 후 추가
4. Delete
- 마지막 요소 삭제: 빠름
- 중간/처음: 보통/최악
* Linear Search(선형 검색): 순서대로 0부터 차례로 검색
배열 정리
- 읽는 속도 빠름
- 검색/추가/삭제 속도 느림
- 추가/삭제는 맨 끝일 때만 효율적
'개발 > CS' 카테고리의 다른 글
| [아키텍처] 그럼 서버 아키텍처를 어떻게 구성하시겠어요? (0) | 2025.07.21 |
|---|---|
| [아키텍처] 운영하던 서비스의 서버 아키텍처를 설명해주세요 (3) | 2025.07.20 |
| Binary Search VS Linear Search (0) | 2022.04.17 |
| [cs50] 비트와 바이트 (0) | 2021.09.08 |
| [cs50] 1.2 - 기억장치 (0) | 2021.08.02 |