[Java] 36. 버블 정렬

백하림's avatar
Feb 10, 2025
[Java] 36. 버블 정렬
💡
int[] arr = {5, 3, 1, 2, 4}; 를 버블 정렬해보자 !

1. 노가다 코드

package algo; public class Bubble02 { public static void main(String[] args) { // 인접한 두 수를 비교하고, 자리 교환 int[] arr = {5, 3, 1, 2, 4}; int temp; // 임시로 저장할 변수 // 회전수는 N-1 // 1회전 (목표 : 4번지의 값을 정하는 것) // 1-1================================= if (arr[0] > arr[1]) { // 교환 조건 temp = arr[1]; arr[1] = arr[0]; arr[0] = temp; } // {3,5,1,2,4} // 1-2================================= if (arr[1] > arr[2]) { // 교환 조건 temp = arr[2]; arr[2] = arr[1]; arr[1] = temp; } // {3,1,5,2,4} // 1-3================================= if (arr[2] > arr[3]) { // 교환 조건 temp = arr[3]; arr[3] = arr[2]; arr[2] = temp; } // {3,1,2,5,4} // 1-4================================= if (arr[3] > arr[4]) { // 교환 조건 temp = arr[4]; arr[4] = arr[3]; arr[3] = temp; } // {3,1,2,4,5} // 2회전 (목표 : 3번지의 값을 정하는 것) // 2-1================================= if (arr[0] > arr[1]) { // 교환 조건 temp = arr[1]; arr[1] = arr[0]; arr[0] = temp; } // {1,3,2,4,5} // 2-2================================= if (arr[1] > arr[2]) { // 교환 조건 temp = arr[2]; arr[2] = arr[1]; arr[1] = temp; } // {1,2,3,4,5} System.out.println(arr[0] + " " + arr[1] + " " + arr[2] + " " + arr[3] + " " + arr[4]); } }
notion image

2. 공통 모듈 찾기

package algo; public class Bubble02 { public static void main(String[] args) { // 인접한 두 수를 비교하고, 자리 교환 int[] arr = {5, 3, 1, 2, 4}; int temp; // 임시로 저장할 변수 int a = 0; // 회전수는 N-1 (여기서 N은 배열의 길이) // 1회전 (목표 : 4번지의 값을 정하는 것) // 1-1================================= if (arr[a] > arr[a + 1]) { // 교환 조건 temp = arr[a + 1]; arr[a + 1] = arr[a]; arr[a] = temp; } // {3,5,1,2,4} // 1-2================================= a++; if (arr[a] > arr[a + 1]) { // 교환 조건 temp = arr[a + 1]; arr[a + 1] = arr[a]; arr[a] = temp; } // {3,1,5,2,4} // 1-3================================= a++; if (arr[a] > arr[a + 1]) { // 교환 조건 temp = arr[a + 1]; arr[a + 1] = arr[a]; arr[a] = temp; } // {3,1,2,5,4} // 1-4================================= a++; if (arr[a] > arr[a + 1]) { // 교환 조건 temp = arr[a + 1]; arr[a + 1] = arr[a]; arr[a] = temp; } // {3,1,2,4,5} // 2회전 (목표 : 3번지의 값을 정하는 것) // 2-1================================= a = 0; // a 다시 초기화 if (arr[a] > arr[a + 1]) { // 교환 조건 temp = arr[a + 1]; arr[a + 1] = arr[a]; arr[a] = temp; } // {1,3,2,4,5} // 2-2================================= a++; if (arr[a] > arr[a + 1]) { // 교환 조건 temp = arr[a + 1]; arr[a + 1] = arr[a]; arr[a] = temp; } // {1,2,3,4,5} System.out.println(arr[0] + " " + arr[1] + " " + arr[2] + " " + arr[3] + " " + arr[4]); } }
notion image

3. 공통 모듈 찾아서 코드 줄이기

package algo; public class Bubble02 { public static void main(String[] args) { // 인접한 두 수를 비교하고, 자리 교환 int[] arr = {5, 3, 1, 2, 4}; // 정렬되지 않은 배열 int temp; // 임시로 저장할 변수 int N = arr.length; // 배열의 길이 // 회전 수는 N-1 (여기서 N은 배열의 길이) for (int i = 0; i < N - 1; i++) { // 각 회전에서 N-1-i 번의 비교를 수행 for (int j = 0; j < N - i - 1; j++) { // 인접한 두 수를 비교하여 자리 교환 조건 확인 if (arr[j] > arr[j + 1]) { // 교환 수행 temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; // 수행할 때 마다 어떻게 나오는가 ? 검증 절차 System.out.println(arr[0] + " " + arr[1] + " " + arr[2] + " " + arr[3] + " " + arr[4]); } } } System.out.println("결과 : " + arr[0] + " " + arr[1] + " " + arr[2] + " " + arr[3] + " " + arr[4]); } }
notion image
Share article

harimmon