Array   배열, 어레이

(2021-03-05)

배열, 배열

1. 배열 (Array)

  ㅇ [일반]
     - 규칙,순서,간격 등에 따라 나열된 요소/데이터들의 집합/모양
        . 例) 배열 안테나, 배열형 도파로 격자, 결정 내 규칙적인 원자 배열, 전자 배열 등

  ㅇ [전산]
     - 비슷한 특징을 갖는 여러 값들을 순서있게 저장할 수 있는 자료구조
     * 통상, 프로그래밍 구현상 가장 기본이 되는 자료구조는 배열과 리스트2. [전산]  배열의 구성 요소

  ㅇ 배열 이름 (array name)  :  배열 그 자체와는 별개로 배열의 이름 지칭(배열 선언)
     - 배열 변수 (array variable)  :  배열 전체 이름을 갖는 변수 처럼 활용
  ㅇ 배열 요소 (array element)  :  배열의 각 성분 원소들
  ㅇ 배열 크기 (array size)  :  배열 요소의 갯수
  ㅇ 배열 인수/키/인덱스/첨자 (array index)  :  특정 요소를 참조하는 수단 (상대적 위치)
     - 통상, 정수이며, 0 부터 시작함


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을 저장할 수 있는 메모리 할당

  ㅇ 다만, 위 사례는, 그 크기가 사전에 제한되는 정적 배열(static array) 이며,
     - 요즘 대부분의 언어는, 필요에 따라 크기를 늘려갈 수 있는, 
     - 동적 배열(dynamic array) 위주로 지원함
        . 例) 파이썬 => list, C++ => std::vector, 자바 : ArrayList 등


6. [전산]  배열의 자료형, 연산, 구분, 변수

  ㅇ 배열의 자료형
     - 대부분의 프로그래밍 언어에서, 배열은 기본으로 내장되는 데이터타입 (내장 자료형) 임
     * [참고] ☞ C 배열, 자바스크립트 배열, PHP 배열, MATLAB 배열 행렬 등 참조

  ㅇ 배열의 연산(처리)
     - 읽기, 중간 삽입/삭제, 끝단 추가/삭제, 복사, 정렬, 검색 등
     - 기타 (최대/최소 값 원소 찾기, 두 원소 교환, 중복값 존재 여부 등)

  ㅇ 배열의 구분
     - 1차원 배열
     - 다차원 배열

  ㅇ 배열의 변수 (배열 변수)
     - 배열 요소들의 시작 위치를 가리키는 참조형 변수


[배열] 1. 배열 2. 배열 코딩 예 3. 연관 배열

 
        최근수정     요약목록     참고문헌