-
array(배열) 기초 개념영상, 글 요약 2022. 12. 25. 18:45
#1 서론
들어가기전에, 메모리는 두가지 종류가 있다.
휘발성 메모리와 비휘발성 메모리이다.
휘발성(volatile) 메모리는 하드드라이브 같은 것이다.
비휘발성(non-volatile) 메모리는 램(RAM)같은 것이다.
램은 컴퓨터를 껏다 키면 데이터가 모두 날아가는 특징이 있다.
우리가 작성하는 코드, 프로그램은 모두 램에 저장 될 것이다.
RAM의 약자는 Random Access Memory이다.
그러므로, 말 그대로 램은 랜덤으로 데이터를 불러올 수 있다. 1,2,3,,,,같이 순차적으로 불러오는 것이 아니라.
그래서 하드드라이브와는 다르게 빠른속도로 데이터를 불러올 수 있다.
#2 본론
배열은 이 램에 최대길이를 미리 예약을 해 놓고, 데이터를 읽고 쓰는 것이다.
배열에서는 아래 4개의 행동을 할 수 있다.
- Read
- Search
- Insert(Add)
- Delete
첫번째, Reading.
말 그대로 읽는 행동이다.
배열이 있으면, '2번 인덱스에 있는 값 주세요' 이다.
두번째, Searching.
아무생각 없이 읽으면 읽기랑 뭐가 다른지 모를 수 있다.
하지만 읽기와 다르게 찾는것이 몇번째 인덱스에 있는지 모른다.
그러므로 일일이 인덱스 하나씩 열어보면서 내가 찾던 값인지 확인해야 한다.
0부터 끝까지 일일이 확인하는 것을 선형검색(Linear Search)라고 한다.
선형검색에서는 찾는 값이 맨 앞에 있다면 바로 찾겠지만, 찾는값이 맨 뒤에 있으면 비효율적이다.
다른 방법으로는 예를들어 이진검색(Binary Search)같이 좀더 효율적인 검색 방법이 있기도 하다.
세번째, Insert.
배열이 최대길이보다 덜 차있을때를 가정해서 설명한다.
배열 맨 마지막에 값을 추가하고싶다면 간단하다. 그냥 넣어주면 된다.
하지만 가운데나, 맨 앞에 추가하고싶다면 좀 복잡하다.
추가하고싶은 값을 넣기 위해 원래 있던 값들이 자리를 뒤로 비켜주어야 한다.
배열의 길이가 얼마 안되면 간단한 작업이겠지만, 많다면 시간이 많이 걸리는 작업일 것이다.
네번째, Delete.
추가와 비슷하다.
삭제를 했으면 뒤에있던 값들을 한칸 앞으로 당겨주어야 한다.
간단하면 간단하고, 복잡하면 복잡한 작업이다.
#3 결론
배열은 읽을때 가장 빠르다.
Searching, Insert, Delete하기엔 비효율적이다.
그러므로 배열에서 찾고, 추가하고, 삭제하려면 맨 끝 인덱스만 사용하는게 효율적이다.
또한 찾기, 추가하기, 삭제하기에 최적화된 자료구조가 있다. 찾아보기 바란다.
#4 참고자료
이 글은 아래 영상을 요약한 것입니다.
https://www.youtube.com/watch?v=NFETSCJON2M&list=PL7jH19IHhOLMdHvl3KBfFI70r9P0lkJwL&index=2
'영상, 글 요약' 카테고리의 다른 글
정적배열, 동적배열 차이점 설명 (0) 2023.01.17 큐(Queues)와 스택(Stacks) (0) 2023.01.04 Hash Table과 array 차이점, 설명 (0) 2023.01.03 계수정렬(counting sort)의 원리 (0) 2023.01.01 big O 간단한 설명 (0) 2022.12.26