* Bubble Sort
마치 거품방울이 뽀글뽀글 올라가는 모양과 비슷하다하여 붙어진 이름이다.
Bubble Sort는 두가지만 알고 있으면 된다.
1. 두가지 값을 비교
2. 두값을 swap함
백문이 불여일견이다.
// Bubble sort
void bubble_sort(int size , int* val)
{
for (int i = 0 ; i < size - 1; i++)
{
for (int j = 0 ; j < size - 1 - i ; j++)
{
if (val[j] > val[j+1])
{
int tmp = val[j];
val[j] = val[j+1];
val[j+1] = tmp;
}
}
}
}
예로 다음 배열을 Bubble Sort 해보이겠다.
{ 9 , 7 , 3 , 5 , 1 , 7 , 2 }
우선 첫 Loop에서의 모습을 보이겠다.
9 7 3 5 1 7 2
7 9 3 5 1 7 2
7 3 9 5 1 7 2
7 3 5 9 1 7 2
7 3 5 1 9 7 2
7 3 5 1 7 9 2
7 3 5 1 7 2 9
마치 왼쪽이 밑이고 오른쪽이 위라고 생각하면 9라는 값은 마치 거품방울이 올라가듯
뽀글뽀글 올라가는 것이 보인다 @^-^@
다음은 7 값이 올라가게 될것이다.
결국 1 2 3 5 7 7 9 로 정렬이 될 것이다.
* 장점
1. 알고리즘이 간단하다.
2. 2중 Sorting이 간편하다. 즉, 학번순으로 정렬을 한뒤 같은 학번내에서 이름순의 정렬이
가능해진다.
* 단점
1. 성능이 O(n^2)으로 약간 느리다고 할 수 있다.
'도서관 I > Algorithm' 카테고리의 다른 글
[C] 최대 이익을 내는 시기를 찾아내는 알고리즘 (0) | 2005.09.13 |
---|