배열은 같은 타입의 데이터를 연속적으로 저장할 수 있는 선형 자료구조이다.
저장된 데이터는 인덱스(index)와 원소값(elemtent)의 쌍으로 구성되고, 인덱스(index)를 통해 각 데이터에 접근 할 수 있다. 인덱스는 배열의 시작부터 몇 번째 위치에 데이터가 있는지를 나타내고, 배열의 크기는 생성시에 정해지며, 이후에는 변경할 수 없다.
배열 내 연산은 크게 4가지로 나뉜다.
배열의 특정 인덱스에 접근하는 경우, 배열은 인덱스를 통해 데이터에 직접 접근할 수 있기 때문에 O(1)의 시간 복잡도를 가진다.
배열에서 특정 데이터를 찾는 경우, 배열은 순차검색이기 때문에 최악의 경우 배열의 모든 요소를 확인해야 하므로 O(n)의 시간 복잡도를 가진다.
배열의 끝에 데이터를 추가하는 경우, 일반적으로 O(1)의 시간 복잡도를 가진다.
하지만 배열이 가득 차 있어 크기를 변경해야 하는 경우, 새 배열을 생성하고 기존 데이터를 복사해야 하므로 이 경우에는 O(n)의 시간 복잡도를 가진다.
배열의 끝에서 데이터를 삭제하는 경우, O(1)의 시간 복잡도를 가진다.
그러나 중간에 있는 데이터를 삭제하는 경우, 삭제한 위치 이후의 데이터를 앞으로 이동시켜야 하므로 이 경우에는 O(n)의 시간 복잡도를 가진다.
배열의 각 요소에 고유한 인덱스로 특정 위치의 데이터에 빠르게 접근 할 수 있다. 이는 특정 위치의 데이터를 읽거나 수정할 때 유용하다.
메모리 공간을 연속적으로 사용하므로, 메모리 관리가 간단하고 효율적이다. 이로 인해 메모리 낭비를 최소화할 수 있다.
동일한 타입의 여러 데이터를 하나의 이름으로 그룹화하여 관리할 수 있기 때문에, 데이터 관리가 용이하다. 이는 반복적인 작업을 수행할 때 특히 유용하다.
2차원, 3차원 등 다차원 배열을 사용하면 복잡한 데이터 구조를 효과적으로 표현하고 처리할 수 있다.