버블 정렬
버블 정렬
버블 정렬은 두 인접한 데이터의 크기를 비교해 정렬하는 방법입니다.
정렬 방법
- 비교 연산이 필요한 범위를 설정한다.
- 인접한 데이터 값을 비교한다.
- swap 조건에 부합하면 swap 연산을 수행한다.
- 비교 대상이 없을 때까지 위의 동작을 반복합니다.
만약 특정 루프 전체 영역에서 swap이 한 번도 일어나지 않앗다면 모두 정렬된 데이터이므로 동작을 종료하면 됩니다.
시간 복잡도
버블 정렬의 시간 복잡도는 O(n^2)으로 다른 정렬 알고리즘보다 속도가 느린 편입니다.
코드(Java)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Main {
public static void main(String[] args) {
int[] arr = {11, 9, 23, 5, 12};
boolean swap = true;
int end = arr.length-1;
while(swap || end==0) {
swap = false;
for(int i=0; i<end; i++) {
if(arr[i] > arr[i+1]) {
int temp = arr[i+1];
arr[i+1] = arr[i];
arr[i] = temp;
swap = true;
}
}
end--;
}
for(int number: arr) { // 출력 결과 : 5 9 11 12 23
System.out.print(number + " ");
}
}
}
참고
Doit! 알고리즘 코딩 테스트 자바편
This post is licensed under CC BY 4.0 by the author.
Comments