버블정렬(Bubble Sort)은 인접한 숫자를 비교하여 자기보다 큰 수가 나오면 교환하는 정렬 알고리즘이다.
시간복잡도는 O(n^2)로 상당히 느리지만 구현히 쉽고 안정적이다.
메모리 사용 공간 : n개의 원소에 대하여 n개의 메모리를 사용한다.
다음은 '오름차순'으로 정렬하는 코드다.
#include <stdio.h>
#include <stdlib.h>
#define SWAP(a,b) {int t=a; a=b; b=t; };
int BubbleSort(int *dataArray, int length)
{
int i, j;
for (i = 0; i < length - 1; i++)
{
for (j = 0; j < length - i -1; j++)
{
if (dataArray[j]>dataArray[j + 1]) //앞의 수가 더 클 경우 자리교환 !
{
SWAP(dataArray[j], dataArray[j + 1]);
}
}
}
}
int main()
{
int *dataArray;
int length=0;
int i = 0;
printf("배열의 크기를 입력하세요:");
scanf("%d", &length);
dataArray = (int*)malloc(sizeof(int)*length);
//입력
printf("크기 %d배열의 원소를 입력하세요: ", length);
for (i = 0; i < length; i++)
{
scanf("%d", &dataArray[i]);
}
BubbleSort(dataArray, length);
//출력
for (i = 0; i < length; i++)
printf("%d ", dataArray[i]);
return 0;
}
728x90
'알고리즘' 카테고리의 다른 글
[C] 이진 탐색 알고리즘의 재귀적 구현 (0) | 2017.04.19 |
---|---|
[C] 피보나치 수열 (0) | 2017.04.19 |
[C] 재귀 함수 (Recursive) 팩토리얼 (0) | 2017.04.19 |
[C] 이진 탐색 알고리즘 (Binary Search) (배열) (0) | 2017.04.18 |
[C] 순차 탐색 알고리즘 (Linear Search) (배열) (0) | 2017.04.18 |