배열이란?

배열이란 연관된 데이터를 하나의 변수에 그룹핑해서 관리하기 위한 방법이다. 

 

즉, 배열은 하나의 변수에 여러 정보를 담을 수 있어 많은 정보를 효율적으로 처리할 수 있는 자료구조이다.

 

 

배열의 장점
  1. 검색 성능이 좋다 : 인덱스를 이용한 무작위 접근이 가능하므로 빠르다.
  2. 순차 접근의 경우에도 데이터를 하나의 연속된 메모리 공간에 할당하므로 연결 리스트보다 빠르다.

 

배열의 단점
  1. 자료의 삽입과 삭제에 비효율적이다 : 항목의 모든 요소를 이동시켜야해서 비효율적.
  2. 메모리 공간 낭비 : 배열은 메모리를 할당 받아 사용하기 때문에 데이터의 존재 유무와 상관없이 일정한 크기의 공간을 점유하고 있기 때문에 데이터를 삭제하더라도 배열 자체를 제거하지 않은 이상 낭비를 유발한다.

 

배열의 시간복잡도
접근 검색 입력 삭제
O(1) O(n) O(n) O(n)

※ 배열의 마지막 원소에 삽입, 삭제 삽입은 당연히 간단하게 끝내지만 (상수 시간) 아닌 경우. 즉, 시간 복잡도의 평균과 최악을 가정하여O(n)이라고 생각하면 될 것 같습니다.

 

Array과 ArrayList의 차이점

Array

- 통상적으로 말하는 자료구조 상의 배열.

- 고정 배열.

- 배열의 크기를 지정하며 그 크기 이상 데이터 삽입 시 불가.

- 배열의 사용하지 않는 인덱스가 있더라도 고정 크기이므로 메모리 낭비.

 

ArrayList

- 동적 배열.

- 자동적으로 크기가 지정되며 그 크기 이상 데이터 삽입 시 원래 크기의 1.5 ~ 2배 사이즈로 크기가 확장되며 삽입 가능.

- 배열의 사용하지 않는 인덱스가 있을 시 크기가 줄어들며 만약 인덱스 1의 데이터를 삭제 시 고정 배열은 1에 접근하였을 때 데이터가 
없지만 동적 배열은 1에 접근하였을 때 2에 있던 데이터가 1로 가있어 데이터가 있다.

- Hash Map, Dictionary, Linked List로 구현되어 있다.

 

코드 예시
// 자바스크립트의 배열은 다른 데이터 타입을 배열안에 같이 넣을 수 있다.
// 다트의 배열은 타입 지정이 없을 시 다른 데이터 타입을 배열안에 같이 넣을 수 있다.

javascript

고정 배열
1. let arr = new Array(3);

동적 배열
1. let arr = [];
2. let arr new Array();

 

'자료구조' 카테고리의 다른 글

Deque란?  (0) 2022.06.27
Queue란?  (0) 2022.06.27
Stack이란?  (0) 2022.06.27
연결리스트란? (단일 연결리스트, 이중 연결리스트, 원형 연결리스트)  (0) 2022.06.09

+ Recent posts