Page 200 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 200

06-2  버블 정렬









                   버블 정렬은 이웃한 두 요소의 대소 관계를 비교하여 교환을 반복합니다.



                   버블 정렬

                   아래의 배열을 이용해 버블 정렬에 대해 알아보겠습니다.

                                            6   4    3   7    1   9    8

                   먼저 끝에 있는 두 요소 9와 8부터 시작합니다. 이때 오름차순으로 배열을 정렬하고자 한다면

                   왼쪽의 값이 오른쪽의 값보다 작아야 합니다. 따라서 9와 8을 교환하면 배열은 아래와 같은
                   상태가 됩니다.

                                            6   4    3   7    1   8    9

                   그런 다음 뒤쪽에서 2, 3번째 요소(1, 8)를 비교합니다. 1은 8보다 작으므로 교환할 필요가 없습
                   니다. 이렇게 이웃한 요소를 비교하고 교환하는 작업을 첫 번째 요소까지 계속하면 그림 6-3과

                   같은 상태가 됩니다. 요소의 개수가 n개인 배열에서 n – 1회 비교, 교환을 하고 나면 가장 작은 요
                   소가 맨 처음으로 이동합니다. 그리고 이런 일련의 과정(비교, 교환 작업)을 패스(pass)라고 합니다.


                                            0   1   2    3   4    5   6
                                           6    4   3    7   1    9   8
                     비교하고 교환합니다.
                                           6    4   3    7   1    8   9


                     비교는 하지만 교환하지는         6    4   3    7   1    8   9
                     않습니다.
                                           6    4   3    1   7    8   9     (n - 1) 회

                                           6    4   1    3   7    8   9

                        가장 작은 요소가 맨
                        처음으로 이동합니다.        6    1   4    3   7    8   9

                                           1    6   4    3   7    8   9
                                              정렬이 끝난 상태
                                        [그림 6-3] 버블 정렬의 첫 번째 패스


                   200   C 알고리즘
   195   196   197   198   199   200   201   202   203   204   205