Array

Hoehenflug·2021년 7월 7일

1. 메모리 관점에서의 배열

  • 메모리의 종류
    - volatile(휘발성) : RAM(Random Access Memory)과 같은 것
    - non-volatile(비휘발성) : 하드 드라이브와 같은 것
  • 프로그램이 돌아가고 변수를 생성할 때 모두 RAM에 저장
  • RAM에서 데이터를 읽는 것이 하드 드라이브에서 읽는 것보다 빠름 -> 데이터 접속을 랜덤으로 할 수 있어 각 메모리 박스의 주소에 빠르게 접근 가능
  • 메모리 관점에서 Array를 생성할 때, 미리 공간의 길이를 선언하고 할당해야 함
  • JS와 Python은 할당하지 않아도 대신 핸들링해줌 => 프로그램이 느려질 수 있음

2. Array의 Reading

  • 0부터 indexing
  • 위치로 요소에 접근
  • 배열에서 읽어내는 것음 엄청 빠름 => 컴퓨터는 배열이 어디서 시작하는지 알고 있기 때문!
  • 많은 자료를 읽어야 한다면 배열이 최고
  • 배열의 길이는 상관 없음 => index에서 요소를 읽어내는 속도는 동일하기 때문

3. Array의 Searching

  • 데이터를 읽을 때는 그냥 값을 얻으면 되지만, 검색을 할 때는 해당 값이 배열에 있는지 없는지, 어디에 있는지 모름 => reading보다 시간이 더 소요
  • 배열에서 해당 값을 찾으려면 배열의 item을 하나하나 열어보고 맞는지 체크하는 과정이 필요(Linear Search)

4. Array의 Insert(Add)

  • best case : 배열의 공간이 남아있는 상태에서 push하는 경우
  • worst case 1 : 배열의 맨 앞에 item 추가하는 경우 => 배열의 모든 item을 움직여야하기 때문
  • worst case 2 : 배열의 공간이 없는데 값을 추가해야 하는 경우 => 더 큰 배열을 만들어서 이전 배열을 복사하고, 새로운 item을 추가해야됨(오랜 시간 소요)

5. Array의 Delete

  • best case : 배열의 마지막 요소를 삭제하는 pop의 경우 => 컴퓨터는 배열이 어디서 시작하고 얼마나 긴지 기억하고 있기 때문!
  • worst case : 배열의 첫 번째 요소 삭제하는 경우

6. 정리

  1. 배열은 데이터를 읽을 때는 정말 빠름!(랜덤으로 접속 가능하기 때문)
  2. 데이터 검색, 추가, 삭제할 때는 느려짐!
  3. 배열에서 추가하고 삭제하고 싶은 상황에는 배열의 맨 끝에서 작업하는 것이 가장 좋음

출처 : Array 배열 기초 개념 by 노마드코더
https://www.youtube.com/watch?v=NFETSCJON2M&list=PL7jH19IHhOLMdHvl3KBfFI70r9P0lkJwL&index=2

0개의 댓글