버블정렬
정렬 중 한 종류
구현은 매우 쉽지만 시간 복잡도가 최악인 정렬로 꼽힌다.
개념
숫자를 순차적으로 돌면서 앞에 있는 숫자와 뒤에 있는 숫자로 비교해
뒷 숫자가 앞 숫자 보다 작다면 서로 위치를 바꿔준다.
출력문
버블정렬코드
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 |