자료구조 # 배열

Han Lee·2022년 11월 29일
0

메모리 관점에서

배열

  • 미리 얼마나 긴지 할당을 시킨다. 시작위치와 길이를 메모리 안에서 선 저장 JS와 Python은 이것을 알아서 해줌
  • Reading : 배열은 0부터 index함 원하는 요소를 얻고 싶으면
    '배열[index번호] = 요소' = 배열에서 읽기가 빠른 이유
    ->컴퓨터는 배열이 어디서 시작하는 알기에 바로 찾아 읽을 수 있다.
  • Searching : 검색은 읽기랑 다름 원하는 요소 값이 배열에 있는지 없는지 모르고 있다해도 위치를 모름 -> 하나씩 다 뒤져야 함
    배열에는 쉽게 접근은 했지만 그 안에서 원하는 것을 찾으려면 배열에 있는 index를 0부터 찾아서 비교한다 원하는게 있을 때 까지
    Linear Searching방식
  • Insert(Add) : 배열은 미리 메모리 공간을 할당해야 한다. 배열이 꽉차지 않은 상태에서 추가는 문제 없다. 어디에 추가하냐가 문제일 뿐 -> 중간에 추가 할때 a=[]*5 a안에는 4개 들어있음 index2에 추가하려면 index234를 345로 밀고 2에 추가해야함
    이미 배열이 풀방일때 : 더 큰 배열을 만들어서 새로 담아야 함
  • Delete : Insert와 비슷함

배열은 읽는데 매우 활용적이지만 검색은 느리고 추가와 삭제는 불리한 점이 많은 자료구조이다.

하나의 자료구조에도 어떤 알고리즘을 쓰는가에 따라서 많은 것이 달라진다.
검색 알고리즘 - 이진 검색, 선형검색
선형검색 - 처음부터 찾아나가는 방식
이진검색 - 모든 배열에 쓸수 없음 - 정렬된 배열에서만 사용가능
정렬된 배열을 반으로 나누면서 검색. 정렬을 하게되면 추가 삭제가 복잡해짐

profile
렌덤형 인간

0개의 댓글