Bubble Sort
2011-01-13
void bubbleSort(int * array, int size)
{
int temp = 0;
int j=0;
bool swapped = true;
while(swapped)
{
j++;
swapped = false;
for( int i = 0; i < size -1 -j ; i++)
{
if ( array[i] > array[i+1] )
{
temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
swapped = true;
}
}
j++;
}
}
void swap(int * a, int * b)
{
int temp = 0;
temp = *a;
*a = *b;
*b = temp;
}
bool swapif(int * a, int * b)
{
if ( *a > *b)
{
swap(a,b);
return true;
}
else
{
return false;
}
}
void bubbleSort2(int * array, int size)
{
int j=0;
bool swapped = true;
while(swapped)
{
swapped=false;
for( int i = 0; i < size -j -1 ; i++)
{
swapped = swapif(array+i,array+i+1) ? true : swapped;
}
j++;
}
}
정렬되는 것이 방울이 올라가는 것처럼 보인다고 해서 버블 정렬. 버블~ 버블~ 기초중의 기초. 거의 외워서 쓰고 있음. 빼먹은 게 있었다. -j 추가. 또 빼먹었다. j++; 의 위치를 아래로 옮김. 그대로는 마지막 항목이 정렬되지 않음. 개량형 추가. 성능상 차이 없음.