정렬중 가장 기본적인 정렬이고, 구현이 가장 쉽다는 장점이 있다. 하지만 시간이 비교적 오래걸린다는 단점을 가지고 있다.
n번째 수와 n-1번째 수를 비교하여 큰수를 오른쪽으로 보낸다. 이 과정을 배열의 처음부터 끝까지 반복하면 제일 마지막에는 가장 큰 수가 올것이다. 이걸 n번 반복하면 결국은 모든 수가 오름차순으로 정렬이 된다.
9 | 3 | 1 | 7 | 5 |
3 | 9 | 1 | 7 | 5 |
3 | 1 | 9 | 7 | 5 |
3 | 1 | 7 | 9 | 5 |
3 |
1 |
7 |
5 |
9 |
<Step 1>
위 과정을 n번 반복하게되면 정렬된 배열이 나오게된다.
버블소트의 worstcase는 입력되는 수가 역순으로 들어왔을 때 이고, averagecase역시
이며, bestcase로는 이미 정렬이 되어있을 때의 O(1)이다.
공간 복잡도는 배열의 크기인 O(1)이다.
3 | 1 | 7 | 5 | 9 |
1 | 3 | 7 | 5 | 9 |
1 | 3 | 7 | 5 | 9 |
1 | 3 | 5 | 7 | 9 |
1 | 3 | 5 | 7 | 9 |
<Step 2>
위 경우는 운좋게 두번만에 정렬이 되지만 코딩상
이 과정을 <Step 5>까지 반복하게 된다.
< 출처 : 유투브(YouTube) - Bubble Sort >
(c++)
(java)
'학교 > 자료구조' 카테고리의 다른 글
[정렬] 선택정렬과 삽입정렬 (1) | 2016.11.05 |
---|---|
[정렬] sorting의 종류와 효율 (0) | 2016.03.28 |
STL container -ing (0) | 2016.03.19 |
기초 Algorithm(2) (0) | 2015.11.03 |
기초 Algorithm(1) (0) | 2015.10.29 |