버블 정렬
Description
기준이 되는 숫자와 바로옆의 숫자를 비교하여 더 작은 숫자를 앞으로 보내주는 것을 반복하는 정렬 방법이다
시간 복잡도 = O(N^2)
이다
이렇게 2와 5의 숫자를 비교한다
큰 수가 오른쪽으로 가야하기 때문에 자리를 바꾸지 않고 다음으로 넘어가면 된다
다음으로 5와 7을 비교한다
마찬 가지로 큰 수인 7이 오른쪽에 있기 때문에 다음으로 넘어간다
7과 8을 비교한다, 자리바꿈 없음
이번에는 왼쪽에 있는 8이 4보다 크기 때문에 서로 자리를 바꾼다
4와 8의 자리가 바뀌었고 8과 9를 비교한다, 자리바꿈 없음
9와 3의 자리를 바꾼다
9와 1의 자리를 바꾼다
9와 6의 자리를 바꾼다>
***
이로써 정렬이 한 번 이루어져 맨 끝 자리는 제일 큰 수(9)로 확정된다
계속해서 위와 같은 과정을 반복하여 끝에서 부터 한 자리씩 수를 정렬해 나가면 된다
Cord
#include <iostream>
using namespace std;
int main()
{
int dataArr[] = { 2, 5, 7, 8, 4, 9, 3, 1, 6 };
// Bubble sort 실행
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 8 - i; j++)
{
if (dataArr[j] > dataArr[j + 1])
{
int temp = dataArr[j];
dataArr[j] = dataArr[j + 1];
dataArr[j + 1] = temp;
}
}
}
// 결과 출력
string result;
for (int idx = 0; idx < 9; idx++)
{
if (idx == 8)
{
result += dataArr[idx] + '0';
}
else
{
result += dataArr[idx] + '0';
result += ", ";
}
}
cout << "data = {" << result << " }";
return 0;
}