Array   배열, 어레이

(2024-02-03)

배열 , 동적 배열


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차원 배열
     - 다차원 배열

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

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

  1. Top (분류 펼침)      :     1,594개 분류    6,533건 해설

"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"
     [정보통신기술용어해설]       편집·운영 (차재복)