버블정렬 

 정렬 중 한 종류 

 구현은 매우 쉽지만 시간 복잡도가 최악인 정렬로 꼽힌다. 

 

개념

 숫자를 순차적으로 돌면서 앞에 있는 숫자와 뒤에 있는 숫자로 비교해 

 뒷 숫자가 앞 숫자 보다 작다면 서로 위치를 바꿔준다.

 

출력문

 

버블정렬코드

void bubbleSort(int *arr, int size)
{	
	int temp;
	int count=0;
	int countTemp=0;
	while (true) 
	{
		for (int i = 0; i < size-1; i++) 
		{
			if (arr[i] > arr[i + 1]) 
			{
				temp = arr[i];
				arr[i] = arr[i + 1];
				arr[i + 1] = temp;
				count++;
				print(arr, size);
			}
		}
		cout << "------------" << endl;
		
		if (count == countTemp) 
		{
			break;
		}
		countTemp = count;
	}
}

 

전체코드 

#include <iostream>
#include <time.h>

using std::cout;
using std::endl;
using std::cin;

void bubbleSort(int *arr, int size);
void InputNumArr(int *arr, int count);
void print(int *arr, int count);

int main() 
{
	srand(time(NULL));
	int selectNum;
	cout<< "숫자 입력" <<endl;
	cin >> selectNum;

	int *arr = new int[selectNum]();

	InputNumArr(arr, selectNum);
	bubbleSort(arr,selectNum);
}


void bubbleSort(int *arr, int size)
{	
	int temp;
	int count=0;
	int countTemp=0;
	while (true) 
	{
		for (int i = 0; i < size-1; i++) 
		{
			if (arr[i] > arr[i + 1]) 
			{
				temp = arr[i];
				arr[i] = arr[i + 1];
				arr[i + 1] = temp;
				count++;
				print(arr, size);
			}
		}
		cout << "------------" << endl;
		print(arr, size);
		
		if (count == countTemp) 
		{
			break;
		}
		countTemp = count;
	}
}

void InputNumArr(int *arr, int count)
{
	for (int i =0; i<count; i++) 
	{
		arr[i] = rand() % 100;
	}
}

void print(int * arr, int count)
{
	for (int i = 0; i < count; i++)
	{
		cout << arr[i] << " | ";
	}
	cout << endl;
}

 

'C++ > C++' 카테고리의 다른 글

STL ) vector  (0) 2021.12.23
템플릿(template)  (0) 2021.12.21
자료구조 : Stack  (0) 2021.12.21
malloc과 new의 차이  (0) 2021.12.21
메모리 5대 영역  (0) 2021.12.20

+ Recent posts