언어/C

버블 정렬(bubble sort)

DangDang's 2019. 4. 6. 14:23

버블 정렬(bubble sort)는 서로 인접한 두 원소를 검사하여 정렬하는 알고리즘 이라고 합니다.

 

버블 정렬은 구현이 매우 간단하지만, 하나의 요소가 가장 왼쪽에서 가장 오른쪽으로 이동하기 위해서는 배열에서 모든 다른 요소들과 교환되어야 한다고 합니다.

 

이에 따라 존재하는 정렬 알고리즘중 시간복잡도가 가장 커서 거의 사용되지 않는 정렬 알고리즘입니다.

 

 

#include <stdio.h>

#define SIZE 5

void bubble_sort(int arr[],int n); // 오름차순
void bubble_sort_reverse(int arr[], int n); // 내림차순
void print_arr(int arr[],int n); // 출력

int main()
{
	int i,j,tmp;
	int arr[SIZE]={7,4,5,1,3};


	bubble_sort(arr,SIZE);
	print_arr(arr,SIZE);

	bubble_sort_reverse(arr,SIZE);
	print_arr(arr,SIZE);
}

void print_arr(int arr[],int n)
{
	for(int i=0;i<n;i++)
		printf("%d ",arr[i]);
	printf("\n");
}


void bubble_sort(int arr[],int n)
{
	int i,j,tmp;
	
	for(i=0;i<n;i++){
		for(j=0;j<j-1;j++){
			if(arr[j]>arr[j+1])
			{
				tmp=arr[j+1];
				arr[j+1]=arr[j];
				arr[j]=tmp;
			}
		}}
}

void bubble_sort_reverse(int arr[],int n)
{
	int i,j,tmp;
	
	for(i=0;i<n;i++){
		for(j=0;j<n-1;j++){
			if(arr[j]<arr[j+1])
			{
				tmp=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=tmp;
			}
		}}
}