버블정렬
버블정렬은 바로 가까이에 있는 두 숫자끼리 비교를 해서 당장 더 작은 숫자를 앞으로 보내주는 것을 반복하는 것이다.
다음의 숫자들을 오름차순으로 정렬하는 프로그램을 작성하세요.
1 10 5 8 7 6 4 3 2 9
#include <stdio.h>
//버블정렬
//선택 정렬과 같이 등차수열이기 때문에 시간복잡도는 선택정렬과 같이
// O(N * N)이다.
//하지만 선택정렬보다 더 느리다.
//계속 바로 옆에 값과 자리를 바꾸는 연산을 하기 때문이다.
//선택 정렬은 가장 작은 요소를 골라서 마지막에 한 번 스와핑을 한다.
//버블 정렬은 선택정렬보다 훨씬 더 비효율적이다.
//시간복잡도는 선택정렬과 같지만 실제 수행시간은 선택정렬보다 더 걸린다.
//알고리즘 중에서 가장 느리다.
int main(void){
int i, j, temp;
int array[10] = {1, 10, 5, 8, 7, 6, 4, 3, 2, 9};
for(i = 0; i < 10; i++){
//0~9, 0~8, 0~7..이런 식으로 비교
// 9 - i 에서 9인 것은 요소 + 1을 해서비교하기 때문.
for(j = 0; j < 9 - i; j++){
//바로 옆에 값과 비교
if(array[j] > array[j + 1]){
//바로 옆에 값과 스와핑.
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
//정렬된 배열(array)을 출력한다.
for(i = 0; i < 10; i++){
printf("%d ", array[i]);
}
return 0;
}
'IT공부 > 알고리즘' 카테고리의 다른 글
기초 정렬 알고리즘 문제 풀이 (0) | 2020.07.28 |
---|---|
퀵 정렬의 시간복잡도와 작동원리 (0) | 2020.07.25 |
삽입정렬 (0) | 2020.07.25 |
정렬의 개요와 선택정렬 (0) | 2020.07.25 |
알고리즘의 개요와 실습 환경 구축 (0) | 2020.07.25 |