버블 정렬 코드 짜보기

Dec 19, 2023
버블 정렬 코드 짜보기
💡
한 번에 코드를 다 짜려고 하지 말고 차근차근 단계를 밟아 나가자.(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

hyeonjeong-jang-0302