[Java] 어서와! 자료구조 알고리즘은 처음이지? 파트 2-1

창진·2022년 10월 6일
0

array(배열)이란?

같은 타입의 변수들로 이루어진 유한 집합으로 정의됩니다. 배열을 구성하는 각각의 값을 배열 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자는 인덱스(index)라고 합니다.

위의 예시처럼 메모리상에 존재하며 arr에는 reference(참조) 주소가 담겨 있습니다. 그 주소는 배열(array)의 첫 번째 값을 가리키고 있습니다.

배열을 생성하면 위의 표와 같이 초기값이 생성됩니다.


위의 예시처럼 String 같은 Object(객체) 값을 사용하게 되면 백열 안에는 reference value(값)만 존재하게 됩니다. 실제의 값들은 메모리상 어딘가에 존재하게 됩니다

배열의 특성

  1. 여러 개의 데이터를 한꺼번에 다룰 수 있습니다.
  2. 배열은 객체(Object)는 아니지만, reference value(변수)로 취급됩니다. (특징)
  3. 메모리상에 연달아 공간을 확보합니다(특징)
  4. 미리 공간을 확보해 놓고 써야 합니다 (단점)
  5. 한 번 만들어진 공간은 크기가 고정됩니다(특징)
  6. 첫 번째 위치만 알면 index로 상대적 위치를 빠르게 찾을 수 있습니다.(장점)

리스트(List)란?

배열이 가지고 있는 인덱스라는 장점을 버리고 대신 빈틈없는 데이터의 적재라는 장점을 취한 데이터 (구조 =스트럭쳐) 라고 할 수 있습니다.
배열처럼 메모리상에 연속적으로 존재하는 것이 아닌 어딘가에 존재하기만 하면 첫 번째 요소로 부터 두 번째 요소로 링크만 연결하면 됩니다. Linkedlist(링크드 리스트) 라고도 불립니다.

데이터를 찾을 때는 항상 링크가 한쪽 방향으로만 연결되어 있기때문에 첫 번째 element(요소)에서 다음 element(요소)로 연결해야 합니다.


위의 단점을 보완한 것이 양방형으로 연결된 Double Linkedlist(더블 링크드 리스트)입니다.


배열에서의 단점은 중간에 데이터를 추가하거나 삭제하기 위해서는 뒤에 있는 요소들을 모두 정리한후 추가하거나 삭제할수 있지만 리스트는 위의 사진처럼 비교적 간단하게 추가하거나 삭제할수 있습니다.

리스트의 특징

  1. 여러 개의 데이터를 한꺼번에 다룰 수 있습니다. (장점)
  2. 메모리상에 연속되지 않아도 됩니다. (특징)
  3. 미리 공간을 확보해 놓지 않아도 됩니다. (장점)
  4. 필요에 따라 데이터가 늘어나거나 줄어듭니다. (장점)
  5. 첫 번째 위치로부터 index(인덱스)로 목표 위치를 알려면 한칸한칸 이동하면서 찾아야 합니다 (단점)
profile
안녕하세요

0개의 댓글