정적 배열
정적 배열은 크기가 고정되어 있는 배열이다
일반적으로 그냥 배열이라고 부르는 배열은 정적 배열이다
길이가 4인 배열에 값이 다 저장되어있는 상황
여기에 새로운 값 5를 넣고 싶으면 어떻게 해야 할까
길이가 5인 새로운 배열을 만들고
기존의 데이터들을 새로운 배열에 옮긴 뒤
5를 저장하면 된다
그런데 이는 너무 비효율적이다
그냥 배열 뒤에 넣으면 안 돼?
배열을 정의하게 되면 메모리에서 쓸 수 있는 공간을 찾아서
저장하려고 하는 데이터 타입과 저장하려는 데이터 수에 따라 연속적인 공간이 정해진다
우리는 배열 바로 뒷부분이 어떤 공간인지 모른다
사용해도 되는 공간인지 알 수 없기 때문에 배열 바로 뒤에 5를 추가하게 되면 위험하다
위험성을 예방하기 위해서 배열은 미리 공간을 고정해 놓는 것이다
그렇다고 해서 배열을 너무 크게 정의하면 안 된다
공간이 낭비되기 때문이다
동적 배열
동적 배열은 상황에 따라서 크기가 바뀌는 배열이다
동적 배열은 정적 배열을 이용해서 만든 배열이다
동적 배열이 꽉 찼을 때 새로운 값을 추가하려고 하면
기존에 있던 배열보다 큰 배열을 만든다
예를 들어 두 배만큼 큰 배열을 만들었다고 하자
그러면 기존 배열에 있던 데이터들을 새로운 배열에 복사하고
새로운 데이터를 저장하게 된다
배열이 또 꽉 차게 되면 또 새로운 큰 배열을 만들고 값을 복사하게 된다
상황에 맞게 배열의 크기를 조절하는 것이다
'프로그래밍 > 자료구조&알고리즘' 카테고리의 다른 글
더블리 링크드 리스트 연산의 시간 복잡도 (0) | 2021.10.02 |
---|---|
싱글리 링크드 리스트 연산의 시간 복잡도 (0) | 2021.09.28 |
시간복잡도 분할 상환 분석(동적 배열의 추가 연산) (0) | 2021.09.25 |
리스트는 사실 배열?(3/3) (0) | 2021.09.11 |
리스트는 사실 배열?(1/3) - 배열과의 차이점 (0) | 2021.09.04 |