반응형
버블 정렬(Bubble Sort) : 서로 인접한 두 원소를 검사하여 정렬하는 알고리즘
인접한 2개의 레코드를 비교하여 크기가 순서대로 되어 있지 않으면 서로 교환한다.
https://gmlwjd9405.github.io/2018/05/06/algorithm-bubble-sort.html
원소를 하나하나씩 비교하며 코드의 패턴을 분석한다.
package study;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class BubbleSort {
public static void main(String[] args) {
// 1. 리스트 만들기
// 2. 리스트 원소 비교하기
// 3. 인접한 원소들을 비교해서 자리바꾸기(1회전)
// 4. 오름차순으로 정렬될까지 회전
// 5. 패턴 찾아서 for문 만들기
// 1. 리스트 만들기
List<Integer> array = Arrays.asList(7, 4, 5, 1, 3);
// System.out.println(array.get(0));
// System.out.println(array.get(1));
// System.out.println(array.get(2));
// System.out.println(array.get(3));
// System.out.println(array.get(4));
int temp; // 자리 바꾸기를 위한 빈 공간
// 1회전(교환 4번)
// 2. 리스트 원소 비교하기
if (array.get(0) > array.get(1)) {
// 3. 인접한 원소들을 비교해서 자리 바꾸기(1회전)
temp = array.get(0);
array.set(0, array.get(1));
array.set(1, temp);
}
if (array.get(1) > array.get(2)) {
temp = array.get(1);
array.set(1, array.get(2));
array.set(2, temp);
}
if (array.get(2) > array.get(3)) {
temp = array.get(2);
array.set(2, array.get(3));
array.set(3, temp);
}
if (array.get(3) > array.get(4)) {
temp = array.get(3);
array.set(3, array.get(4));
array.set(4, temp);
}
// 2회전(교환 2번)
if (array.get(0) > array.get(1)) {
temp = array.get(0);
array.set(0, array.get(1));
array.set(1, temp);
}
if (array.get(1) > array.get(2)) {
temp = array.get(1);
array.set(1, array.get(2));
array.set(2, temp);
}
if (array.get(2) > array.get(3)) {
temp = array.get(2);
array.set(2, array.get(3));
array.set(3, temp);
}
// 3회전(교환2번)
if (array.get(0) > array.get(1)) {
temp = array.get(0);
array.set(0, array.get(1));
array.set(1, temp);
}
if (array.get(1) > array.get(2)) {
temp = array.get(1);
array.set(1, array.get(2));
array.set(2, temp);
}
// 4회전(교환X)
if (array.get(0) > array.get(1)) {
temp = array.get(0);
array.set(0, array.get(1));
array.set(1, temp);
}
System.out.println(array.get(0)); // 1
System.out.println(array.get(1)); // 3
System.out.println(array.get(2)); // 4
System.out.println(array.get(3)); // 5
System.out.println(array.get(4)); // 7
}
}
package study;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class BubbleSort {
public static void main(String[] args) {
// 1. 리스트 만들기
// 2. 리스트 원소 비교하기
// 3. 밀접한 원소들을 비교해서 자리바꾸기(1회전)
// 4. 오름차순으로 정렬될까지 회전
// 5. 패턴 찾아서 for문 만들기
// 6. 1회전 수행할 때마다 정렬에서 제외되는 데이터가 하나씩 늘어난다.
List<Integer> array = Arrays.asList(7, 4, 5, 1, 3);
// System.out.println(array.get(0));
// System.out.println(array.get(1));
// System.out.println(array.get(2));
// System.out.println(array.get(3));
// System.out.println(array.get(4));
int temp;
for (int i = 0; i < array.size(); i++) { // 총 회전수 구하기
int countChild = 0; // 원소 비교횟수
for (int j = 0; j < array.size() - 1; j++) { // 1회전 하는동안 비교하는 반복문
if (array.get(j) > array.get(j + 1)) { // 원소 비교하기 조건문 (1바퀴)
temp = array.get(j);
array.set(j, array.get(j + 1));
array.set(j + 1, temp);
countChild++; // 4번 -> 2번 -> 2번 -> 0번
}
}
System.out.println((i + 1) + "번째 회전에 교환 " + countChild + "번");
}
// }
System.out.println();
System.out.println(array.get(0));
System.out.println(array.get(1));
System.out.println(array.get(2));
System.out.println(array.get(3));
System.out.println(array.get(4));
}
}
반응형