버블정렬(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

+ Recent posts