티스토리 뷰
이 글은 인프런의 영리한 프로그래밍을 위한 알고리즘 강좌를 듣고 정리한 내용입니다.
Bubble Sort(거품 정렬)
거품 정렬은 두 인접한 원소를 검사하여 정렬하는 방법이다. 시간 복잡도가 로 상당히 느리지만,
코드가 단순하기 때문에 자주 사용된다.
출처 : 위키 백과
예제
[4, 54, 2, 8, 63, 7, 55, 56] [4, 2, 8, 54, 7, 55, 56, 63] [2, 4, 8, 7, 54, 55, 56, 63]
[4, 2, 54, 8, 63, 7, 55, 56] [2, 4, 8, 54, 7, 55, 56, 63] [2, 4, 7, 8, 54, 55, 56, 63]
pass3
[4, 2, 8, 54, 63, 7, 55, 56] [2, 4, 8, 7, 54, 55, 56, 63]
pass 2
[4, 2, 8, 54, 7, 63, 55, 56]
[4, 2, 8, 54, 7, 55, 63, 56]
[4, 2, 8, 54, 7, 55, 56, 63]
pass1
의사 코드
Bubble Sort(A[], n) { // 배열 A[1...n]을 정렬
for last <- n down to 2 { -------------------------- ①
for i <- 1 to last-1 --------------------------- ②
if(A[i] > A[i+1]) then A[i] <-> A[i+1]; ---- ③
}
}
실행 시간 : (n-1) + (n-2) + ... + 2 + 1 = Θ(n2)
① 의 for 루프는 n-1 번 반복
② 의 for 루프는 각각 n-1 , n-2, ... , 2, 1 번 반복
③ 의 교환은 상수시간 작업
시간복잡도
T(n) = (n-1) + (n-2) + ... + 2 + 1 = Θ(n2)
소스코드(Java)
'알고리즘' 카테고리의 다른 글
Heap Sort(힙 정렬) (1) | 2017.12.12 |
---|---|
Quick Sort(퀵 정렬) (0) | 2017.12.12 |
Merge Sort(병합 정렬) (0) | 2017.12.11 |
Insertion Sort(삽입 정렬) (0) | 2017.12.11 |
Selection Sort(선택 정렬) (0) | 2017.12.11 |