배열이란
- 동일한 자료형으로 구성된 연속된 자료의 집합
- 자바의 배열은 힙 메모리를 할당
- 배열은 Resizing 이 안된다
- 0 부터 시작
선언
- 자료형[] 변수, 자료형 변수[] 로 선언
- 배열도 객체 이기 때문에 new로 객체 생성
- 간단한 예시
- 배열 선언 : int[] arr;
- 메모리 할당 : arr = new int[10];
- 배열 요소의 이용 : arr[0] = 10;
- 배열의 데이터 개수는 length라는 속성으로 제공 = 배열명.length
배열의 장단점
- 장점 : 접근 방법이 쉬움
- 단점 : 생성시 크기를 결정하면 변경 불가, 연속된 메모리 공간을 사용하므로 연속된 빈 공간이 없으면 생성 불가, 데이터를 정렬해 두지 않으면 검색 속도가 느림, 데이터의 삽입과 삭제가 어려움
public class OneArray
{
public static void main(String[] args)
{
int [] arr = {10,20,30};
for(int i=0; i<arr.length; i++)
{
System.out.println("arr[" + i + "]=" + ar[i]);
}
}
}
다차원 배열
- 2차원 배열
- 배열의 크기 : 행과 열로 구분해서 표현
- 배열의 선언 : 자료형[][] 배열명; OR 자료형 배열명[][];
- 배열명 = new 자료형[행][열];
- ex) int[][] a = new int[2][3]; // 2행 3열의 배열 (2x3행열)
public class DoubleArray
{
public static void main(String[] args)
{
int[][] arr = { { 10, 20 }, { 30, 40 } };
int i, j;
for (i = 0; i < arr.length; i++)
{
for (j = 0; j < arr[i].length; j++)
System.out.print(" " + arr[i][j]);
System.out.println();
}
}
}
정렬
버블 정렬
- 버블 정렬은 n개의 데이터가 있을 때 1부터 n-1번째 자료까지 n-1번 동안 다음 자료와 비교해가며 정렬하는 방법
- 시간 복잡도 O(n²)
for(int i = 0; i < arr.length - 1; i++) {
for(int j = 0; j < arr.length - (i + 1); j++) {
if(arr[j] < arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
선택 정렬
- 선택정렬은 첫번째 자리부터 마지막에서 두번째 자리까지 자신보다 뒤에 있는 모든 자리들과 비교해서 다음 자료가 작으면 2개의 요소의 자리를 변경해 준다
- 시간 복잡도 O(n²)
for(int i = 0; i < arr.length - 1; i++) {
for(int j = i + 1; j < arr.length; j++) {
if(arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}