#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문을 잘 살펴보면 이해될 것이라 생각한다.