본문 바로가기
Java

[Java] 버블 정렬(Bubble Sort) 구현해보기

by 작은돼지 2022. 8. 16.

문제

정수 배열 numbers의 요소들을 오름차순으로 정렬한다.

 

코드

		int[] numbers = { 5, 4, 3, 2, 1 };
		int temp = 0;

		for (int i = 0; i < numbers.length - 1; i++) {
			for (int j = 0; j < numbers.length - i - 1; j++) {
				if (numbers[j] > numbers[j + 1]) {
					temp = numbers[j];
					numbers[j] = numbers[j + 1];
					numbers[j + 1] = temp;
				}
			}
		}
		
		for(int i : numbers) {
			System.out.print(i + " ");
		}

현재 값이 뒤의 값보다 크다면 swap한다.

 

1회차 루틴

 > 5와 4를 비교하여 큰 값을 뒤로 보낸다. {4, 5, 3, 2, 1}

 > 5와 3 {4, 3, 5, 2, 1}

 > 5와 2 {4, 3, 2, 5, 1}

 > 5와 1 {4, 3, 2, 1, 5}

이제 5는 가장 큰 값이다.

 

이런 식으로 가장 큰 값이 골라지면 그 값(인덱스)를 제외한 부분을 버블 정렬하는 식으로 한다.

그러므로 안쪽 반복문의 조건식은 배열의 길이 - 바깥쪽 반복 - 1이 된다.

 

쉬운 오름차순 정렬 방법

import java.util.Arrays;

		// ...

		int[] numbers = { 5, 4, 3, 2, 1 };
		Arrays.sort(numbers);
		
		for(int i : numbers) {
			System.out.print(i + " ");
		}