버블정렬이란?
버블 정렬은 첫 번째 자료와 두번째 자료를, 두번째 자료와 세 번째 자료를 ... 이런 식으로 마지막-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 |
---|