알고리즘

Bubble sort

leeeehhjj 2022. 3. 31. 13:30
public class BubbleSort {
    public void bubbleSort(int[] arr) {
        int tmp;
        for (int i = 0; i < arr.length; i++) {
            for (int j = arr.length-1; j > i; j--) {
                if (arr[j] < arr[j-1]) {
                    tmp = arr[j];
                    arr[j] = arr[j-1];
                    arr[j-1] = tmp;
                }
            }
        }
    }

    public void bubbleSort2(int[] arr) { //개선(마지막으로 교환한 위치 앞은 이미 정렬된 상태이므로 다시 수행하지 않는다)
        int tmp;
        int k = 0;
        while (k < arr.length - 1){
            int last = arr.length-1; //마지막으로 교환한 위치의 오른쪽 인덱스 값
            for (int j = arr.length-1; j > k; j--) {
                if (arr[j] < arr[j-1]) {
                    tmp = arr[j];
                    arr[j] = arr[j-1];
                    arr[j-1] = tmp;
                    last = j;
                }
            }
            k = last;
        }
    }
}