/ POSTS

Java의 Array에 대해 알아보기

Note : 이 글은 지극히 주관적인 생각을 토대로 작성된 글입니다. 혹시나 잘못된 부분이 있다면 메일 또는 코멘트를 통해 알려주시면 감사하겠습니다. 😄 제 메일은 About 탭에서 확인하실 수 있습니다. 📧

P.S : 이 페이지는 웹에 최적화 된 페이지입니다. 가급적 모바일이 아닌 웹에서 보시는 것을 추천드립니다.

배열(array).

  • 연속된(contiguous) 메모리 공간 차지, 인덱스(index)로 위치 식별
int n[] = new int[100];
n[0]=5;
n[1]=8;
n[2]=4;

배열 내 임의 위치 자료 접근 시간 : O(1)

  • 인덱스 0 위치 자료 접근 시간: 8000+0*4 -> 덧셈 1회, 곱셈 1회

  • 인덱스 1 위치 자료 접근 시간: 8000+1*4 -> 덧셈 1회, 곱셈 1회

  • 인덱스 2 위치 자료 접근 시간: 8000+2*4 -> 덧셈 1회, 곱셈 1회

  • 인덱스 n-1 위치 자료 접근 시간: 8000+(n-1)*4 -> 덧셈 1회, 곱셈 1회

  • 배열 내 자료 위치에 무관하게 항상 일정한 시간 소요

배열 첫 위치 자료 삽입: O(n)

  int n[] = new int[10];
  for (int i = 0; i < 5; i++) 
    n[i] = i + 1;

연결리스트(linked list)

  • 연결리스트 내 임의 위치 상수 시간 접근 불가.

  • k번째 자료 접근 위해 head부터 k번 다음 자료 위치로 이동 필요.

LinkedList<Integer> list = new LinkedList<>();
list.add(5);
list.add(8);
list.add(4);

연결리스트 내 임의 위치 자료 접근 시간: O(n)

  • 위치 자료 접근 시간 : 1

  • 위치 자료 접근 시간 : 2

  • 위치 자료 접근 시간 : 3

  • 마지막 n번째 위치 자료 접근 시간: n

  • 최악의 경우 n번 이동 필요: O(n)

  • 배열 내 자료 위치에 무관하게 항상 일정한 시간 소요

연결리스트 첫 위지 자료 삽입 : O(1)

LinkedList<Integer> list=new LinkedList<>();
list.add(1);
list.add(2);
list.add(3);
list.addFirst(7);