CS 공부일지[자료구조]-(2)배열

wodnr_P·2023년 3월 15일
0

CS 공부일지

목록 보기
6/7

📝 자료구조 - (2) 배열

  • 선형 자료 구조
  • 동일 자료형의 데이터를 일렬로 저장할 수 있는 자료구조
  • 장점
    • 랜덤 액세스 가능 - 특정 위치에 있는 요소에 바로 접근 가능
    • 대용량 데이터 처리, 정렬에 효율적
  • 단점
    • 크기가 정적으로 결정 - 동적 크기 조정 어려움
    • 삽입/삭제 시 요소 이동 필요 - 시간 복잡도 높음 [ O(n) ]

동적 크기 조정이 어렵다는 단점을 보완하기 위한 배열
--> 동적 배열(dynamic array)

  • 배열 (Python)
# 파이썬 리스트 사용
arr = [1, 2, 3, 4, 5]
print(arr[2]) # 3
arr[2] = 6
print(arr) # [1, 2, 6, 4, 5]
  • 동적 배열 (Python)
# Numpy 라이브러리 사용
import numpy as np

arr = np.array([1, 2, 3, 4, 5])
print(arr[2]) # 3
arr[2] = 6
print(arr) # [1, 2, 6, 4, 5]
  • 파이썬에서는 구현 상의 차이점으로서 큰 차이가 없음
  • Numpy 라이브러리는 배열 연산에 최적화, 파이썬 리스트 보다 속도가 빠르고 메모리 사용량이 적음

--> 동적 배열은 크기를 조절할 수 있다는 점이 가장 큰 차이점, 하지만 메모리 사용량이 증가


  • 배열과 동적 배열 비교 (Java)
// 배열
int[] arr = {1, 2, 3, 4, 5};
System.out.println(arr[2]); // 3
arr[2] = 6;
System.out.println(Arrays.toString(arr)); // [1, 2, 6, 4, 5]


// 동적 배열
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
System.out.println(list.get(2)); // 3
list.set(2, 6);
System.out.println(list); // [1, 2, 6, 4, 5]

--> ArrayList 클래스로 동적 배열 생성

profile
발전하는 꿈나무 개발자 / 취준생

0개의 댓글