[자료구조] 배열이란 무엇인가?

2024. 9. 13. 16:19·공부/자료구조


☑️ 배열이란 무엇인가?

배열은 연속된 자료구조(Contiguous Data Structures)를 가지는 대표적인 예시다. 연속된 자료구조는 단일 메모리 청크에 모든 원소를 저장하며, 모든 원소의 접근 소요 시간은 일정하게 O(1)을 가진다. 또, 연속된 자료구조의 특징으로 캐시 지역성(Cache Locality)이 있는데, 이는 연속된 자료구조의 특성 상, 원소와 원소가 인접하기 때문에 주변 원소에 접근할 때 빠르게 접근할 수 있도록 원소 하나를 가져올 때, 주변 원소를 캐쉬(Cache)에 가져오는 것이다.

 

위의 설명한 특성들로 인해서 배열의 원소들은 각자 같은 크기의 메모리 공간을 가지는데, 이 공간들은 연속성을 가진다. 그렇기 때문에 다음과 같은 수식을 통해서 인덱스의 위치를 찾을 수 있다.

배열 원소가 가지는 메모리 공간 : b
첫 번째 원소의 메모리 위치 : a
첫 번째 원소의 Index : s
주소를 찾고자 하는 원소의 Index : i

🟧 찾는 원소의 시작 메모리 주소

a + b( i - s )
= 첫 번째 원소의 메모리 위치 + 원소의 메모리 공간(주소를 찾고자 하는 원소의 Index - 첫 번째 원소의 Index)

 

🟧 찾는 원소의 끝 메모리 주소

a + b( i - s + 1 ) - 1
= 첫 번째 원소의 메모리 위치 + 원소의 메모리 공간(주소를 찾고자 하는 원소의 Index - 첫 번째 원소의 Index + 1) - 1

 

 

🔍 내 생각에는..

참고했던 책에서 설명한 배열은 시작 인덱스가 0이 아니라, 1으로 시작되는 경우도 염두한 것 같다. 만약에 0에만 한정된다면 아래의 사진을 예로 들고 다음과 같은 공식이 가능하다.

🟧 찾는 원소의 시작 메모리 주소

시작 주소 + (배열 원소의 크기 * 찾는 인덱스)

 

🟧 찾는 원소의 끝 메모리 주소

시작 주소 + (배열 원소의 크기 * 찾는 인덱스) - 1

 

'공부 > 자료구조' 카테고리의 다른 글

[자료구조] 동적 메모리 할당  (0) 2024.10.07
'공부/자료구조' 카테고리의 다른 글
  • [자료구조] 동적 메모리 할당
태역
태역
  • 태역
    RYULAB
    태역
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 언어
        • C
        • C++
        • C#
      • 엔진, 프레임워크
        • Unity
        • Unreal
        • Electron
      • 공부
        • 디자인 패턴
        • 수학
        • CS
        • Git
        • 알고리즘
        • 자료구조
      • 코테
        • 프로그래머스
        • 백준
      • 독서
        • Effective C#
        • CLR via C#
        • 뇌를 자극하는 윈도우즈 시스템 프로그래밍
        • 오브젝트
        • CSAPP
        • OSTEP
      • 프로젝트
        • Unity
      • 개발 일지
        • 퓨처리티
        • 골든타임
      • 활동
        • 게임잼 후기
        • 게임제작동아리 브릿지
        • 크래프톤 정글
        • 기타
      • 기타
  • 블로그 메뉴

    • 링크

    • 공지사항

      • 2024 04 17
    • 인기 글

    • 태그

      인프런 #인프런강의후기 #게임개발 #게임개발강의 #인강후기 #강의후기 #게임개발자 #인프런강의
      티스토리챌린지
      오블완
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    태역
    [자료구조] 배열이란 무엇인가?
    상단으로

    티스토리툴바