22. 배열

Ldev·2021년 5월 11일
0

자바기초

목록 보기
22/22
post-custom-banner

배열이란

  • 동일한 자료형으로 구성된 연속된 자료의 집합
  • 자바의 배열은 힙 메모리를 할당
  • 배열은 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) 
    {
        // 2차원배열 선언과 동시에 초기화
        int[][] arr = { { 10, 20 }, { 30, 40 } };
        int i, j;
        
        // 행과 열을 출력하기위해 반복문 2
        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;
		}
	}
}
profile
배우는 개발자
post-custom-banner

0개의 댓글