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]);
}
}

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]);
}
}

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]);
}
}

Share article