배열

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

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

역사[편집]

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

어셈블리어들은 기계 자체적으로 제공하는 것 외에 일반적으로 배열을 위한 특별한 지원은 없다. 포트란(1957년), 코볼(1960년), 알골 60(1960년)을 포함한 최초의 고급 프로그래밍 언어들은 다차원 배열을 지원하였으며, C(1972년)도 이 기능을 지원한다. C++(1983년)의 경우, 다차원 배열을 위한 클래스 템플릿들이 지원되며, 이 안에서 차원은 런타임[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].