<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://www.gaonwiki.com/w/index.php?action=history&amp;feed=atom&amp;title=%EB%B0%B0%EC%97%B4%28%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%29</id>
	<title>배열(프로그래밍) - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://www.gaonwiki.com/w/index.php?action=history&amp;feed=atom&amp;title=%EB%B0%B0%EC%97%B4%28%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%29"/>
	<link rel="alternate" type="text/html" href="https://www.gaonwiki.com/w/index.php?title=%EB%B0%B0%EC%97%B4(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D)&amp;action=history"/>
	<updated>2026-07-07T22:21:17Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://www.gaonwiki.com/w/index.php?title=%EB%B0%B0%EC%97%B4(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D)&amp;diff=107661&amp;oldid=prev</id>
		<title>Gaon12: 시작</title>
		<link rel="alternate" type="text/html" href="https://www.gaonwiki.com/w/index.php?title=%EB%B0%B0%EC%97%B4(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D)&amp;diff=107661&amp;oldid=prev"/>
		<updated>2024-10-14T01:59:31Z</updated>

		<summary type="html">&lt;p&gt;시작&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 개요 ==&lt;br /&gt;
배열(Array)은 프로그래밍에서 가장 기본적이고 널리 사용되는 자료 구조 중 하나이다. 동일한 데이터 타입의 여러 요소를 연속된 메모리 공간에 저장하는 방식으로, 효율적인 데이터 관리와 접근을 가능하게 한다.&lt;br /&gt;
&lt;br /&gt;
== 역사와 배경 ==&lt;br /&gt;
배열의 개념은 컴퓨터 과학의 초기부터 존재했다. 1950년대 초반, 프로그래밍 언어 FORTRAN에서 처음으로 배열이 도입되었으며, 이후 거의 모든 프로그래밍 언어에서 기본적인 자료 구조로 자리 잡았다.&lt;br /&gt;
&lt;br /&gt;
== 특징 ==&lt;br /&gt;
=== 연속된 메모리 할당 ===&lt;br /&gt;
배열의 가장 큰 특징은 연속된 메모리 공간에 데이터를 저장한다는 점이다. 이로 인해 인덱스를 통한 빠른 접근이 가능하다.&lt;br /&gt;
&lt;br /&gt;
=== 고정된 크기 ===&lt;br /&gt;
대부분의 프로그래밍 언어에서 배열은 생성 시 크기가 고정된다. 이는 메모리 관리의 효율성을 높이지만, 동적인 크기 조절에는 제한이 있다.&lt;br /&gt;
&lt;br /&gt;
=== 동일한 데이터 타입 ===&lt;br /&gt;
하나의 배열은 동일한 데이터 타입의 요소들만 저장할 수 있다. 이는 메모리 사용의 일관성과 효율성을 보장한다.&lt;br /&gt;
&lt;br /&gt;
== 배열의 구현 ==&lt;br /&gt;
다양한 프로그래밍 언어에서 배열을 구현하는 방식을 살펴보자.&lt;br /&gt;
&lt;br /&gt;
=== C언어에서의 배열 ===&lt;br /&gt;
C언어에서 배열은 다음과 같이 선언하고 사용할 수 있다:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int numbers[5] = {1, 2, 3, 4, 5};&lt;br /&gt;
printf(&amp;quot;%d&amp;quot;, numbers[2]); // 출력: 3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python에서의 배열 ===&lt;br /&gt;
Python에서는 리스트를 사용하여 배열과 유사한 기능을 구현한다:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
numbers = [1, 2, 3, 4, 5]&lt;br /&gt;
print(numbers[2])  # 출력: 3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Java에서의 배열 ===&lt;br /&gt;
Java에서는 다음과 같이 배열을 선언하고 사용한다:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
int[] numbers = {1, 2, 3, 4, 5};&lt;br /&gt;
System.out.println(numbers[2]);  // 출력: 3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 배열의 연산 ==&lt;br /&gt;
=== 접근 (Access) ===&lt;br /&gt;
배열의 특정 요소에 접근하는 것은 O(1)의 시간 복잡도를 가진다. 이는 배열의 가장 큰 장점 중 하나이다.&lt;br /&gt;
&lt;br /&gt;
=== 검색 (Search) ===&lt;br /&gt;
정렬되지 않은 배열에서의 검색은 O(n)의 시간 복잡도를 가진다. 정렬된 배열에서는 이진 검색을 통해 O(log n)으로 개선할 수 있다.&lt;br /&gt;
&lt;br /&gt;
=== 삽입 (Insertion) 및 삭제 (Deletion) ===&lt;br /&gt;
배열의 끝에 요소를 추가하거나 삭제하는 것은 O(1)의 시간 복잡도를 가진다. 그러나 중간에 삽입하거나 삭제하는 경우, 다른 요소들을 이동시켜야 하므로 O(n)의 시간 복잡도를 가진다.&lt;br /&gt;
&lt;br /&gt;
== 다차원 배열 ==&lt;br /&gt;
배열은 여러 차원으로 확장될 수 있다. 2차원 배열은 행렬을 표현하는 데 자주 사용된다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};&lt;br /&gt;
printf(&amp;quot;%d&amp;quot;, matrix[1][1]); // 출력: 5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 배열의 응용 ==&lt;br /&gt;
배열은 다양한 알고리즘과 자료 구조의 기본이 된다. 몇 가지 예를 들면:&lt;br /&gt;
&lt;br /&gt;
=== 정렬 알고리즘 ===&lt;br /&gt;
버블 정렬, 선택 정렬, 퀵 정렬 등 대부분의 정렬 알고리즘은 배열을 기반으로 한다.&lt;br /&gt;
&lt;br /&gt;
=== 스택과 큐 ===&lt;br /&gt;
스택과 큐와 같은 추상 자료형은 배열을 사용하여 구현할 수 있다. 자세한 내용은 [[큐(프로그래밍)]], [[스택(프로그래밍)]] 문서를 참고하자.&lt;br /&gt;
&lt;br /&gt;
=== 그래프 표현 ===&lt;br /&gt;
인접 행렬을 사용한 그래프 표현은 2차원 배열을 활용한다.&lt;br /&gt;
&lt;br /&gt;
== 장단점 ==&lt;br /&gt;
=== 장점 ===&lt;br /&gt;
* 빠른 요소 접근 (O(1))&lt;br /&gt;
* 메모리 효율성&lt;br /&gt;
* 캐시 지역성으로 인한 성능 향상&lt;br /&gt;
&lt;br /&gt;
=== 단점 ===&lt;br /&gt;
* 고정된 크기 (일부 언어에서는 동적 배열을 지원)&lt;br /&gt;
* 삽입과 삭제의 비효율성&lt;br /&gt;
* 메모리 낭비 가능성 (크기를 너무 크게 설정한 경우)&lt;br /&gt;
&lt;br /&gt;
== 결론 ==&lt;br /&gt;
배열은 간단하면서도 강력한 자료 구조로, 프로그래밍의 기본이 되는 요소이다. 그 단순성과 효율성 때문에 다양한 알고리즘과 더 복잡한 자료 구조의 기반이 되며, 현대 프로그래밍에서도 여전히 중요한 역할을 하고 있다.&lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Knuth, Donald. The Art of Computer Programming, Volume 1: Fundamental Algorithms. Addison-Wesley, 1997.&lt;br /&gt;
* Cormen, Thomas H., et al. Introduction to Algorithms. MIT Press, 2009.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--분류--&amp;gt;&lt;br /&gt;
[[분류:자료구조]] [[분류:프로그래밍]] [[분류:알고리즘]]&lt;/div&gt;</summary>
		<author><name>Gaon12</name></author>
	</entry>
</feed>