본문 바로가기

알고리즘 공부

버블 정렬 ( Bubble Sort )

버블 정렬은 이웃하는 숫자를 비교 후 작은 수를 앞으로 큰 수를 뒤로 보내는 정렬입니다.

 

나무위키에서 버블정렬 설명 애니메이션을 보면 이해가 더욱 쉽습니다!

 

[ 나무위키 링크 ]

https://namu.wiki/w/%EC%A0%95%EB%A0%AC%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

 

 

시간 복잡도는 O(n^2) 이며 아래는 자바 코드입니다.

import java.util.Arrays;

public class BubbleSort {

	public static void main(String[] args) {
		
        // 정렬 할 리스트
		int [] list = {5, 4,6,7,3,8,14,73,46,66};
		
        // 메소드 실행
		bubbleSort(list);

		// 결과 출력
		System.out.println(Arrays.toString(list));
	}

	// 버블 정렬
	static void bubbleSort(int[] intArr) {
    
    	// 0 ~ 배열 길이까지
		for(int i=0; i<intArr.length-1; i++) {
        	// 0부터 배열 길이까지
			for(int j=0; j<intArr.length-1; j++) {
				int temp = 0;
				
                // 배열[j]가 배열 [j+1] 보다 클 때 : 앞의 숫자보다 뒤의 숫자가 클 때
				if(intArr[j] > intArr[j+1]) {
                	// temp = temporary = 임시의 = 배열[j] 
                	// 데이터를 교환하기 위해 임시 변수에 배열[j] 값을 넣는다.
					temp = intArr[j];
                    
                    // 배열[j] = 배열[j+1] 
					intArr[j] = intArr[j+1];
                    
                    // 배열[j+1] = 임시값 
                    // 만약 위에서 temp 변수를 사용하지 않고 저장했더라면 배열[j] = 배열[j+1] 가 되기에 교환이 안됨
					intArr[j+1] = temp;
				}
				
			}
		}
	}
}