티스토리 뷰


구현 소스

BubbleSort.h


#ifndef BUBBLESORT_H
#define BUBBLESORT_H

#include <stdio.h>

void BubbleSort_Ascending(int Data[], int size);
void BubbleSort_Descending(int Data[], int size);

int IsSorting_Ascending(int Data[], int size);
int IsSorting_Descending(int Data[], int size);
#endif


-------------------------------------------------------------------------
BubbleSort.cpp

#include "BubbleSort.h"


void BubbleSort_Ascending(int Data[], int size)
{
	int i;
	int j;

	int k;
	int temp;
	int count=1;

	for(i=0; i<size-1;i++)
	{
		
		printf("Current Array State : ");
		for(k=0; k<size;k++)
			printf("%d ", Data[k]);
		printf("\n");

		printf("  - Loop count : %d\n", count++);

		if(IsSorting_Ascending(Data,size))
			break;
		
		
		for(j=0;j< size-(i+1);j++)
		{
			if(Data[j] > Data[j+1])
			{
				temp = Data[j];
				Data[j] = Data[j+1];
				Data[j+1] = temp;
			}
		}
	}

}
void BubbleSort_Descending(int Data[], int size){
	int i;
	int j;

	int k;
	int temp;
	int count=1;

	for(i=0; i<size-1;i++)
	{
		printf("Current Array State : ");
		for(k=0; k<size;k++)
			printf("%d ", Data[k]);
		printf("\n");

		printf("  - Loop count : %d\n", count++);

		if(IsSorting_Descending(Data,size))			
			break;		
	
		for(j=0;j< size-(i+1);j++)
		{
			if(Data[j] < Data[j+1])
			{
				temp = Data[j];
				Data[j] = Data[j+1];
				Data[j+1] = temp;
			}
		}
	}

}

int IsSorting_Ascending(int Data[], int size){
	int Sorting_TF=0;
	int i;

	for(i=0; i<size-1;i++){
		if(Data[i]<=Data[i+1])
			Sorting_TF=1;
		else{
			Sorting_TF=0;
			break;
		}		
	}
	return Sorting_TF;

}
int IsSorting_Descending(int Data[], int size){
	int Sorting_TF=0;
	int i;

	for(i=0; i<size-1;i++){
		if(Data[i]>=Data[i+1])
			Sorting_TF=1;
		else{
			Sorting_TF=0;
			break;
		}		
	}
	return Sorting_TF;

}


-------------------------------------------------------------------------
main.cpp

#include "BubbleSort.h"

int main(){
	int Data[5] = {1,2,3,4,5};
	int i;

	printf(" Data : ");
	for(i=0;i<5;i++)
		printf("%d, ",Data[i]);
	printf("\n");
		
	printf("--- Bubble sorting : Ascending ---- \n");
	BubbleSort_Ascending(Data, ( sizeof(Data) / sizeof(int) ) );	
	printf(" Data : ");
	for(i=0;i<5;i++)
		printf("%d, ",Data[i]);
	printf("\n");

	printf("--- Bubble sorting : Descending ---- \n");
	BubbleSort_Descending(Data, ( sizeof(Data) / sizeof(int) ) );	
	printf(" Data : ");
	for(i=0;i<5;i++)
		printf("%d, ",Data[i]);
	printf("\n");


	return 0;
}


-------------------------------------------------------------------------

출력 결과