배열이란?
같은 타입의 변수들이 연속적으로 저장되는 공간이다
배열은 메모리를 효율적으로 관리하기 위해 사용한다
- 배열은 데이터를 읽는 속도가 빠른 것에 비해 검색, 추가, 삭제할 때는 느려질 수 있다. 검색, 추가, 삭제를 위한 이동이 특정 위치에서 많기 때문이다.
- 배열은 방의 갯수가 고정되어 있기 때문에 삭제할 때 메모리가 낭비되는 단점이 있다
- 값을 추가할 때도 중간에 추가하고 싶다면 옆에 있는 값들이 모두 이동해야 하므로 할 일이 많다
접근, 검색, 추가, 삭제는 배열 내 연산이다.
1. 접근 : 배열의 n번째 인덱스에 해당하는 값을 찾는다
2. 검색 : 알고싶은 값의 인덱스를 알지 못할 때 사용한다
3. 추가 : 배열은 크기가 고정되어 있기 때문에 크기가 꽉 차있다면 값을
추가할 수 없다
만약 추가할 공간이 있는데 그 추가할 공간이
배열의 맨 끝이 아니면 추가할 공간 이후의 값들은 모두 뒤로 밀어야 하기 때문에O(n)의 시간복잡도
를 가진다
배열의 맨 뒤이고 공간이 있다면O(1)의 시간복잡도
를 가진다
4. 삭제 : 삭제도 추가와 마찬가지로 삭제하려는 값의 인덱스가 맨 마지막이 아니라면O(n)의 시간복잡도
를 가진다
그리고 삭제할 인덱스가 배열의 맨 뒤이고 공간이 있다면O(1)의 시간복잡도
를 가진다
시간복잡도라는 것은 얼마나 빠르게 결과를 출력할 수 있는지로 수치가 작을수록 효율적인 알고리즘이라 할 수 있다
import java.util.Scanner; public class Array01{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); //1. System.out.println("인덱스 몇 번에 숫자를 넣고싶나요? "); int index=scan.nextInt(); System.out.println("무슨 숫자를 넣고싶나요? "); int num=scan.nextInt(); int[] a = new int[10]; a[index]=num; System.out.println(a[?]); //2. int[] a= {3,4,2,6,2,4,4}; a[3]=5; System.out.println("a[3]에 들어있는 값은?"); //3. char[] b= {'A', 'c', 'D'}; System.out.println(b[4]); } }
?
에 어떤 값이 들어가야 num의 값이 나올까요?