1. 배열 (Array)
ㅇ [일반]
- 규칙,순서,간격 등에 따라 나열된 요소/데이터들의 집합/모양
. 例) 배열 안테나, 배열형 도파로 격자, 결정 내 규칙적인 원자 배열, 전자 배열 등
ㅇ [전산]
- 비슷한 특징 (동일 유형)을 갖는 여러 값들이 순서있게 저장되는 자료구조
* 한편, 프로그래밍 구현상 가장 기본이 되는 자료구조는, 배열과 리스트 임
2. [전산] 배열의 구성적 특징
ㅇ 배열 이름 (array name) : 배열 그 자체와는 별개로 배열의 이름을 지칭 (배열 선언)
- 배열 변수 (array variable) : 배열 전체를, 이름을 갖는 변수 처럼 활용
ㅇ 배열 인수/키/인덱스/첨자 (array index) : 특정 요소를 참조하는 수단 (상대적 위치)
- 통상, 정수이며, 0 부터 시작함
ㅇ 배열 요소 (array element) : 배열의 각 성분 원소(값)들
ㅇ 배열 크기 (array size) : 배열 요소의 갯수
3. [전산] 배열의 기능적 특징
ㅇ ① 동일 데이터 유형
- 주로, 동일한 데이터 유형을 가지나,
- 때론, 이질형 데이터형도 지원 가능한 프로그래밍 언어도 있음
- 한편, 이질형 데이터들이 모인 집합체는, `레코드` 라고 함
ㅇ ② 이름 참조
- 이름으로 참조되어질 수 있음
ㅇ ③ 값 저장소
- 데이터 저장소의 집합으로 볼 수 있음
- 연관된 값들이 순서있게/나열식으로 담겨진 집합
4. [전산] 배열의 관점별 특징
ㅇ 배열 접근
- 접근 방법 : 배열 이름 및 첨자(인수/인덱스)로 한 번에 직접 접근
- 접근 시간 : 배열의 각 요소에 접근하는 시간은 모두 동일
. 배열 크기와 상관없이 어느 위치든 1 단계면 족함
.. 배열의 처음 위치로부터 오프셋 계산
.. 기본위치 + 오프셋 (요소크기*인수) : 1개 곱셈 및 1개 덧셈이면 됨
. 즉, 인수/인덱스 만 알면,
.. 어떤 위치의 요소라도, 시간복잡도(빅오표기법)으로 O(1)으로 접근 가능
ㅇ 배열 처리
- 순서 : 배열 요소들을 임의 순서로 처리 가능
- 삽입/삭제 : 배열 내 요소의 삽입,삭제는 단 1 단계 만 필요
. 즉, 빅오표기법으로 O(1) 임
ㅇ 배열 크기 및 저장
- 크기 : 고정 크기로써, 정적임 (사용전 미리 배열 크기를 정해야 함)
- 저장 : 통상, 메모리에 연속되게 단일 블록화되어 저장 할당됨
. 낭비되는 공간이 거의 없음
. 다만, 큰 배열일 경우, 필요 메모리 할당이 불가능할 수도 있음
5. [전산] 배열의 표기, 선언
ㅇ 통상, 프로그래밍 언어 상에서 배열의 표기는,
- 먼저, 배열 명칭이 주어지고, 뒤에, 대괄호([ ])로 둘러싸인채, 그 안에 배열 크기가 선언됨
. 例) type name[size]; => int array[6];
ㅇ 배열의 선언 및 생성
- C 언어 例)
. 선언 => 타입 배열명[크기];
. 例) int items[5]; items = [0,1,2,3,4];
- 자바언어 例)
. 선언 => 타입[] 배열명;
. 생성 => 배열명 = new 타입[크기];
. 例) int[] items = new int[5];
.. 정수형 5개 item을 저장할 수 있는 메모리 할당
6. [전산] 정적 배열, 동적 배열
ㅇ 위 5.항의 사례는, 그 크기가 사전에 제한되는 정적 배열(static array) 이며,
- 요즘 대부분의 언어는, 필요에 따라 크기를 늘려갈 수 있는,
- 동적 배열 (dynamic array)을 지원함
ㅇ 동적 배열의 원리
- 미리 초기값을 작게 잡아 생성하고, 데이터 추가 필요시, 더 큰 공간을 확보 늘려주어,
- 이전 배열 요소들을 모두 복사한 후, 새로운 데이터를 삽입 가능
ㅇ 동적 배열 例)
- 파이썬 => list
- C++ => std::vector
- 자바 : ArrayList 등
7. [전산] 배열의 자료형, 연산, 구분, 변수
ㅇ 배열의 자료형
- 대부분의 프로그래밍 언어에서, 배열은 기본으로 내장되는 데이터타입 (내장 자료형) 임
* [참고] ☞ C 배열, 자바스크립트 배열, PHP 배열, MATLAB 배열 행렬 등 참조
ㅇ 배열의 연산(처리)
- 읽기, 삽입/삭제, 복사, 정렬, 검색 등
- 기타 (최대/최소 값 원소 찾기, 두 원소 교환, 중복값 존재 여부 등)
ㅇ 배열의 구분
- 1차원 배열
- 다차원 배열
ㅇ 배열의 변수 (배열 변수)
- 배열 요소들의 시작 위치를 가리키는 참조형 변수