카테고리 없음

[C언어] 버블정렬 알고리즘(bubble sort)

s뽈록이s 2013. 7. 17. 15:44
#define SWAP(a,b) { int t; t = a; a = b; b = t; }

void BubbleSort(char *ar, int num)
{
	int i, ii;

	for (i = 0; i < num - 1; i++)
	{
		for (ii = 1; ii < num - i; ii++)
		{
			if (ar[ii - 1] > ar[ii]) SWAP(ar[ii - 1], ar[ii]);
		}
	}
}
 
void main()
{
     char str[]="hello";
 
     printf("정렬 전의 문자열 : %s\n", str);
     BubbleSort(str, strlen(str));
     printf("정렬된 문자열 : %s\n", str);
}

프로그램 실행화면


버블정렬 알고리즘은 정령 알고리즘 중에서 가장 단순하고 쉽다. 검색 알고리즘에 비유하자면 순차검색 알고리즘이랑 비슷한 알고리즘이다.


정렬해야할 배열이 있다. 처음부터 끝까지 순차적으로 정렬을 한번 해준다. 1번지와 2번지를 비교해 2번지가 더 작다면 1번지와 2번지를 바꾸어준다.


그리고 2번지와 3번지를 비교한다. 이렇게 끝까지 갔다가 다시 처음으로 되돌아오되 끝까지 실행할 필요 없이 끝의 -1까지 반복한다.


왜냐하면 방금 전 가장 큰 수를 끝으로 보내었기 때문이다. 이렇게 계속 반복하다 보면 1번지와 2번지만 남게 된다. 즉 n-1번까지 실행을 하면 된다.


잘 이해가 안된다면 중복 for문을 잘 살펴보면 이해될 것이라 생각한다.