
한 번에 코드를 다 짜려고 하지 말고 차근차근 단계를 밟아 나가자.(test 파일을 만들고 거기서 하면 헷갈리지 않아)
첫 번째 도전
배열의 길이를 이용해 for문 4바퀴 돌리기
package ex03.test;
// 5, 8, 2, 4, 3 을 오름차순으로 정렬하라.
public class BubbleTest01 {
    public static void main(String[] args) {
        int[] arr = {5, 8, 2, 4, 3}; // 안의 구조는 변해야 하니까 final이 아니야
        final int N = arr.length; // 상수의 이름은 대문자로 정의한다.
        // 첫 번째 도전: 4바퀴 돌기
        for (int i = 0; i < N - 1; i++) {
            System.out.println("몇 번 돌지?");
        }
    }
}
두 번째 도전
4바퀴 도는데, 1회전 때 4바퀴 도는 내부 for문 만들기
package ex03.test;
// 5, 8, 2, 4, 3 을 오름차순으로 정렬하라.
public class BubbleTest01 {
    public static void main(String[] args) {
        int[] arr = {5, 8, 2, 4, 3};
        final int N = arr.length;
        // 두 번째 도전: 4바퀴 도는데, 1회전 때 4바퀴 도는 내부 for문 만들기
        for (int i = 0; i < N - 1; i++) {
            for (int j = 0; j < N - 1; j++) {
                System.out.println("몇 번 돌지?");
            }
            System.out.println();
        }
    }
}세 번째 도전
4바퀴 도는데, 내부는 4, 3, 2, 1로 돌기
package ex03.test;
public class BubbleTest02 {
    public static void main(String[] args) {
        int[] arr = {5, 8, 2, 4, 3};
        final int N = arr.length;
        // 세 번째 도전: 4바퀴 도는데, 내부는 4, 3, 2, 1로 돌기
        for (int i = 0; i < N - 1; i++) {
            for (int j = 0; j < N - 1 - i; j++) {
                System.out.println("몇 번 돌지?");
            }
            System.out.println();
        }
    }
}네 번째 도전
0번 배열의 값과 1번 배열의 값 서로 바꾸기
두 공간의 값을 서로 바꾸려면 손이 하나 더 있어야 한다. 변수명은 temp로 많이 한다.
package ex03.test;
public class BubbleTest03 {
    public static void main(String[] args) {
        int[] arr = {4, 3};
        int temp = 0;
        temp = arr[0]; // temp = 4
        arr[0] = arr[1];// arr[1]=4;
        arr[1] = temp;
        System.out.println(arr[0] + "," + arr[1]);
    }
}다섯 번째 도전
이웃하는 두 개의 배열의 값 바꾸기
package ex03.test;
public class BubbleTest04 {
    public static void main(String[] args) {
        int[] arr = {5, 8, 2, 4, 3};
        final int N = arr.length;
        int temp;
// arr[0]과 arr[1]의 값 바꾸기
        if (arr[0] > arr[1]) {
            temp = arr[0];
            arr[0] = arr[1];
            arr[1] = temp;
        }
// arr[1]과 arr[2]의 값 바꾸기
        if (arr[1] > arr[2]) {
            temp = arr[1];
            arr[1] = arr[2];
            arr[2] = temp;
        }
// arr[2]과 arr[3]의 값 바꾸기
        if (arr[2] > arr[3]) {
            temp = arr[2];
            arr[2] = arr[3];
            arr[3] = temp;
        }
// arr[3]과 arr[4]의 값 바꾸기
        if (arr[3] > arr[4]) {
            temp = arr[3];
            arr[3] = arr[4];
            arr[4] = temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}여섯 번째 도전
다섯 번째 도전을 for문으로 표현하기
package ex03.test;
public class BubbleTest05 {
    public static void main(String[] args) {
        int[] arr = {5, 8, 2, 4, 3};
        final int N = arr.length;
        int temp;
        // 필요한 변수는 i랑 i+1
        // 배열을 넘어서는 값은 쓸 수 없어. n-1번 비교해야 한다는 것을 잊어선 안 된다.
        // 1회전
        for (int i = 0; i < arr.length - 1; i++) {
            if (arr[i] > arr[i + 1]) {
                temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}일곱 번째 도전
for문을 이용해 배열의 오름차순 정렬 완성 시키기
package ex03.test;
public class BubbleTest06 {
    public static void main(String[] args) {
        int[] arr = {5, 8, 2, 4, 3};
        final int N = arr.length;
        int temp;
        for (int loop = 1; loop < N; loop++) {
            for (int i = 0; i < N - loop; i++) {
                if (arr[i] > arr[i + 1]) {
                    temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                }
            }
            System.out.print(loop + "회전");
            for (int i = 0; i < N; i++) {
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        }
    }
}여덟 번째 도전
버블 정렬 메서드 만들기
package ex03;
public class BubbleEx01 {
    ///////////////----------------- 버블 메서드 시작 ----------------------//////////////////
    // 메서드(행위)는 메인 위에 만들자
    static void bubble(int[] arr) { // static을 호출할 때는 class 이름으로 찾는다.
        final int N = arr.length;
        int temp;
        for (int loop = 1; loop < N; loop++) {
            for (int i = 0; i < N - loop; i++) {
                if (arr[i] > arr[i + 1]) {
                    temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                }
            }
            System.out.print(loop + "회전");
            for (int i = 0; i < N; i++) {
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        }
    }
    ///////////////----------------- 버블 메서드 끝 ----------------------//////////////////
    public static void main(String[] args) {
        int[] arr = {5, 8, 2, 4, 3};
        BubbleEx01.bubble(arr); // class이름.메서드 이름으로 호출하는 것이 원칙인데
//        bubble(arr); // 같은 클래스 안에 있는 메서드 이름만으로 불러올 수 있다.
        System.out.println();
        int[] arr2 = {5, 3000, 8, 100, 2, 4, 3, 700};
        BubbleEx01.bubble(arr2);
    }
}Share article