[자료구조] 배열(Array)

김엄지·2024년 5월 21일

자료구조

목록 보기
2/6

배열이란?

여러 데이터를 하나의 이름으로 그룹핑해서 관리하기 위한 자료구조
배열은 동일한 데이터 타입의 요소들이 연속적으로 메모리 공간에 저장하는 방법이다. 각 요소는 고유한 인덱스를 가지며, 이를 통해 데이터의 순서를 유지하고, 특정 위치의 요소에 빠르게 접근할 수 있다.

배열의 특징

  • 연속적인 메모리 배치 : 배열의 요소들은 메모리 상에서 연속적으로 배치된다. 따라서 특정 인텍스의 요소에 접근하는 속도가 매우 빠르다.
  • 인덱스 : 배열의 요소는 0부터 시작하는 정수 인덱스를 통해 접근할 수 있다.
  • 고정크기 : 배열의 크기는 고정되어 있으며, 생성할 때 지정해야 한다.

배열의 장단점

장점

  • 빠른 접근 속도: 인덱스를 사용하여 배열의 요소에 접근하는 시간 복잡도는 O(1)이다. 이는 요소가 어디에 위치하든 접근 시간이 일정함을 의미한다.
  • 메모리 효율성: 배열은 연속된 메모리 공간을 사용하므로, 메모리 오버헤드가 적다.
  • 간단한 구조: 배열은 구조가 단순하여 이해하고 사용하기 쉽다.

단점

  • 고정 크기: 배열의 크기를 미리 지정해야 하며, 크기를 변경할 수 없다. 이로 인해 메모리 낭비나 부족이 발생할 수 있다.
  • 삽입과 삭제가 비효율적: 배열의 중간에 요소를 삽입하거나 삭제하려면, 해당 위치 이후의 요소들을 이동시켜야 한다. 따라서 이러한 연산의 시간 복잡도는 O(n)이다.
  • 동일 타입의 데이터만 저장 가능: 배열은 동일한 데이터 타입의 요소만 저장할 수 있다.

배열 예제1 (자바)

배열 선언과 초기화

  • 배열을 선언하기 위해서는 배열의 타입과 크기를 지정해야 한다.
  • 다음은 int 타입의 배열을 선언하고 크기가 5인 배열을 초기화하는 예시이다.
int[] numbers = new int[5];

배열에 값 할당

  • 배열에 값을 할당하려면 인덱스를 사용해 특정 위치에 값을 대입한다.
  • 인덱스는 0부터 배열의 크기보다 1 작은 값까지 유효하다.
  • 다음은 배열의 인덱스 0부터 4까지 값을 할당하는 예시다.
numbers[0] = 1;
numbers[1] = 2;
numbers[2] = 3;
numbers[3] = 4;
numbers[4] = 5;

배열의 값 참조

  • 배열의 값을 참조하기 위해서도 인덱스를 사용한다.
  • 다음은 배열의 인덱스 2에 해당하는 값을 출력하는 예시다.
System.out.println(numbers[2]);

배열의 반복문

  • 배열의 모든 요소에 접근하기 위해 반복문을 사용할 수 있다.
  • 다음은 for 반복문을 사용하여 배열의 모든 값을 출력하는 예시다.
for (int i = 0; i < numbers.length; i++) {
    System.out.println(numbers[i]);
}

배열 예제2 (자바)

public class ArrayExample {
    public static void main(String[] args) {
        // 배열 선언 및 초기화
        int[] numbers = {1, 2, 3, 4, 5};
        
        // 배열 요소에 접근 및 출력
        for (int i = 0; i < numbers.length; i++) {
            System.out.println("Element at index " + i + ": " + numbers[i]);
        }
        
        // 배열 크기
        System.out.println("Array length: " + numbers.length);
        
        // 배열 요소 변경
        numbers[2] = 10;
        System.out.println("Updated index: " + numbers[2]);
    }
}

마무리

배열은 기본적이지만 매우 중요한 자료 구조이다. 빠른 접근 속도와 메모리 효율성을 제공하지만, 고정 크기와 삽입/삭제의 비효율성이라는 단점도 있다.

profile
나만의 무언가를 가진 프로그래머가 되자

0개의 댓글