버블정렬이란?


버블 정렬은 첫 번째 자료와 두번째 자료를, 두번째 자료와 세 번째 자료를 ... 이런 식으로 마지막-1 번째 자료와 마지막 자료를 비교하면서 교환하여 자료를 정렬하는 것이다.


1회전 수행하고 나면 가장 큰 자료가 맨 뒤로 이동하게되고, 2회전에서는 맨 끝에 있는 자료는 정렬에서 제외되고, 끝에서 두번째 자료가 두번째로 큰 값이 된다.



#include <iostream>

using namespace std;


int main() {

    int n, i, j ,tmp;

    int data[10];

    for ( n=0; n<=9; n++ ){

        cin >> data[n];

    }

    for ( i = 1; i <= 9; i++) {

        for ( j = 0; j <= 9-i; j ++) {

            if ( data[j]> data[j+1]) {

                tmp = data[j];

                data[j] = data[j+1];

                data[j+1] = tmp;

            }

        }

    }

    for (int x =0; x<=9;x++) {

        cout << data[x] << " ";

    }


    return 0;

}




심화 -> 중간에 종료하기


특정 회전에서의 자료 교환 여부를 검사하고 더이상 교환이 없을때 완료된 것으로 파악하고 출력하기


#include <iostream>

using namespace std;


int main() {

    int n, i, j ,tmp , sw, cnt;

    int data[10];

    for ( n=0; n<=9; n++ ){

        cin >> data[n];

    }

    cnt = 0;

    for ( i = 1; i <= 9; i++) {

        sw = 0;

        for ( j = 0; j <= 9-i; j ++) {

            if ( data[j]> data[j+1]) {

                tmp = data[j];

                data[j] = data[j+1];

                data[j+1] = tmp;

                cnt++;

                sw = 1;

            }

        }

        if ( sw ==0) {

            break;

        }

    }

    for (int x =0; x<=9;x++) {

        cout << data[x] << " ";

    }


    return 0;

}


'algorithm > [C++] 자료구조' 카테고리의 다른 글

선택정렬  (0) 2018.05.31

+ Recent posts