본문 바로가기

알고리즘

[버블 정렬] Java 버블 정렬

public class Algo02 {
	/*
	 * 버블정렬
	 * 옆에 있는 값과 비교해서 더 작은 값을 앞으로 보내면
	 * 효율성이 가장 떨어지는 알고리즘
	 * 1 10 5 8 7 6 4 3 2 9
	 * 1-> 9번째까지 1 10 5 8 7 6 4 3 2 9 
	 * 2-> 8번째까지 1 5 10 8 7 6 4 3 2 9
	 * 3-> 1 5 8 10 7 6 4 3 2 9
	 * ...
	 * 가장 큰 값이 맨 끝으로
	 */
	public static void main(String[] args) {
		int temp;
		int arr[] = {1,10,5,8,7,6,4,3,2,9};
		
		for(int i =0 ; i < arr.length; i ++) {
			for(int j = 0; j < 9 - i; j ++) {
				if(arr[j] > arr[j + 1]) {
					temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
		}
		for(int i = 0; i < arr.length; i ++) {
			System.out.print(arr[i]+ " ");
		}
	}
	
	/*
	 * 시간 복잡도
	 * 10 + 9 + 8 + ... + 1
	 * N * (N + 1) / 2
	 * O(N^2)
	 * 선택정렬보다 느리다 -> 바로 옆에 있는 값과 자리를 바꾸기 때문에 3개의 값을 사용하여 시간이 더 소요된다.  
	 */
}