자료구조 & 알고리즘/버블 정렬, 삽입 정렬, 선택 정렬

버블 정렬, 삽입 정렬, 선택 정렬 구현 java 예시 코드

꾸준함의 미더덕 2024. 5. 8. 18:58
public class Main {
    // 버블 정렬 -> 버블정렬은 비교 시 인덱스 증가시키며 정렬..
    public static void bubbleSort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) { //횟수
            for (int j = 0; j < arr.length - 1 - i; j++) { //인덱스
                if (arr[j] > arr[j + 1]) {
                    swap(arr, j, j + 1);
                }
            }
        }
    }

    // 삽입 정렬 -> 삽입정렬은 비교 시 인덱스 감소시키며 정렬..
    public static void insertionSort(int[] arr) {
        for (int i = 1; i < arr.length; i++) { // 범위
            for (int j = i; j > 0; j--) { // j-1이 같거나 크면 멈춤
                if (arr[j - 1] > arr[j]) {
                    swap(arr, j - 1, j);
                } else {
                    break;
                }
            }
        }
    }

    // 선택 정렬
    private static void selectionSort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) { //선택 위치
            int minIdx = i;
            for (int j = i; j < arr.length; j++) {
                if (arr[minIdx] > arr[j]) { // minIdx 구하기
                    minIdx = j;
                }
            }
            swap(arr, i, minIdx);
        }
    }

    public static void swap(int[] arr, int a, int b) {
        int tmp = arr[a];
        arr[a] = arr[b];
        arr[b] = tmp;
    }
    
    public static void main(String[] args) {
        // Test code
        int[] arr = {3, 5, 2, 7, 1, 4};
        bubbleSort(arr);
        System.out.println("버블 정렬: " + Arrays.toString(arr));

        arr = new int[]{3, 5, 2, 7, 1, 4};
        insertionSort(arr);
        System.out.println("삽입 정렬: " + Arrays.toString(arr));

        arr = new int[]{3, 5, 2, 7, 1, 4};
        selectionSort(arr);
        System.out.println("선택 정렬: " + Arrays.toString(arr));

    }
}