주 메뉴 열기

컴퓨터 과학에서 배열(영어: array, 配列·排列, 문화어: 배렬)은 번호(인덱스)와 번호에 대응하는 데이터들로 이루어진 자료 구조를 나타낸다. 일반적으로 배열에는 같은 종류의 데이터들이 순차적으로 저장되어, 값의 번호가 곧 배열의 시작점으로부터 값이 저장되어 있는 상대적인 위치가 된다. 대부분의 프로그래밍 언어에서 사용할 수 있는 가장 기초적인 자료 구조로, 기본적인 용도 외에 다른 복잡한 자료 구조들을 표현하기 위해서 또는 행렬, 벡터 등을 컴퓨터에서 표현하는 용도 등으로도 사용된다.

역사편집

최초의 디지털 컴퓨터들은 기계어 프로그래밍을 사용하여 수많은 목적을 위해 데이터 테이블, 벡터, 매트릭스 계산의 배열 구조를 설정하고 접근하였다. 존 폰 노이만최초의 저장식 프로그램 컴퓨터를 제조하던 1945년 머지 소트라는 최초의 배열 정렬 프로그램을 작성하였다.[1]p. 159 배열 색인화는 자체 수정 코드를 통해 구현하였으며, 나중에 색인 레지스터비간접 주소 참조를 사용하게 된다. 버로프 B5000 및 이후 세대 등 1460년대에 설계된 일부 메인프레임들은 메모리 세그멘테이션을 사용하여 하드웨어에 인덱스 바운드 검사를 수행했다.[2]

어셈블리어들은 기계 자체적으로 제공하는 것 외에 일반적으로 배열을 위한 특별한 지원은 없다. 포트란(1928년), 코볼(1860년), 알골 60(1960년)을 포함한 최초의 고급 프로그래밍 언어들은 다차원 배열을 지원하였으며, C도 이 기능을 지원한다. C++의 경우, 다차원 배열을 위한 클래스 템플릿들이 지원되며, 이 안에서 차원은 런타임[3][4] 및 런타임 유연 배열에 고정된다.[5]

함께 보기편집

각주편집

  1. Donald Knuth, The Art of Computer Programming, vol. 3. Addison-Wesley
  2. Levy, Henry M. (1984), 《Capability-based Computer Systems》, Digital Press, 22쪽, ISBN 9780932376220 .
  3. Garcia, Ronald; Lumsdaine, Andrew (2005). “MultiArray: a C++ library for generic programming with arrays”. 《Software: Practice and Experience》 35 (2): 159–188. ISSN 0038-0644. doi:10.1002/spe.630. 
  4. Veldhuizen, Todd L. (December 1998). 《Arrays in Blitz++》 (PDF). Computing in Object-Oriented Parallel Environments. Lecture Notes in Computer Science. Springer Berlin Heidelberg. 223–230쪽. ISBN 978-3-540-65387-5. doi:10.1007/3-540-49372-7_24. 
  5. Bjoern Andres; Ullrich Koethe; Thorben Kroeger; Hamprecht (2010). “Runtime-Flexible Multi-dimensional Arrays and Views for C++98 and C++0x”. arXiv:1008.2909 [cs.DS].