반응형
버블 정렬(bubble sort)
버블 정렬(bubble sort)은 서로 이웃하는 데이터들을 비교해서 서로 교환하는 방식으로 정렬합니다.
#include <stdio.h>
void print(int a[], int size) {
int i;
for (i = 0; i < size; i++)
printf("%d ", a[i]);
printf("\n");
}
void bubble_sort(int a[], int size) {
int i, j, t;
int temp;
for (i = size - 1; i > 0; i--) {
for (j = 0; j < i; j++) {
if (a[j] > a[j + 1]) { // 오름 차순 정렬
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
int main() {
int list[8] = { 69, 10, 30, 2, 16, 8, 31, 22 };
int size = 8;
print(list, size);
bubble_sort(list, size);
print(list, size);
}
다음 코드는 버블 정렬의 각 단계별로 교환과정을 출력하는 예제입니다.
버블 정렬은 n-1 단계까지 진행하게 됩니다.
#include <stdio.h>
void print(int a[], int size) {
int i;
for (i = 0; i < size; i++)
printf("%d ", a[i]);
printf("\n");
}
void bubble_sort(int a[], int size) {
int i, j, temp;
for (i = size - 1; i > 0; i--) {
printf("\n[%d단계]\n", size - i);
for (j = 0; j < i; j++) {
if (a[j] > a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
print(a, size);
}
}
}
int main() {
int list[8] = { 69, 10, 30, 2, 16, 8, 31, 22 };
int size = 8;
print(list, size);
bubble_sort(list, size);
print(list, size);
}
버블 정렬은 아래와 같이도 표현할 수 있습니다.
for (i=0;i<N-1;i++)
{
for (j=N-1;j>i;j--)
{
if (a[j]<a[j-1])
{
t = a[j];
a[j] = a[j-1];
a[j-1] = t;
}
}
}
반응형
'C_C++' 카테고리의 다른 글
(C언어) qsort 함수를 이용한 숫자 정렬 (0) | 2022.10.04 |
---|---|
(C언어) 선택 정렬 Selection Sort (0) | 2022.10.02 |
(C언어) 로또 번호 생성: 중복되지 않은 수 (0) | 2022.10.02 |
(C++) auto 키워드: 자동 타입 추론(automatic type deduction) (0) | 2022.10.02 |
(C언어) -1.0 ~ 1.0 사이의 난수 생성하기 (0) | 2022.10.02 |