728x90
반응형
정렬의 종류 : 버블정렬, 선택정렬, 삽입정렬
1. 버블 정렬
우선 버블정렬에 대해 알아보자
인접한 두개의 원소의 크기를 비교해서 자리를 바꾸면서 정렬을 한다.
위 그림처럼 반복하면서 정렬을 한다.
2. 코드
void bubbleSort(int arr[])
{
cout << "===정렬===" << endl;
int tmp;
for (int i = 0; i < ARR_LEN-1; i++)
{
if (arr[i] > arr[i + 1])
{
tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
// 순서 정렬후 다시 처음부터 검사
i = -1;
}
}
}
main.cpp (전체 코드)
#include<iostream>
#include<time.h>
using namespace std;
#define ARR_LEN 10
void printNum(int arr[]);
void shuffle(int arr[]);
void bubbleSort(int arr[]);
int main()
{
int arr[ARR_LEN];
for (int i = 0; i < ARR_LEN; i++)
{
arr[i] = i + 1;
}
printNum(arr);
shuffle(arr);
printNum(arr);
bubbleSort(arr);
printNum(arr);
}
void printNum(int arr[])
{
for (int i = 0; i < ARR_LEN; i++)
{
cout << arr[i] << " ";
}
cout << endl << endl;
}
void shuffle(int arr[])
{
cout << "===섞기===" << endl;
srand(time(NULL));
for (int i = 0; i < ARR_LEN; i++)
{
int tmp = arr[i];
int idx = rand() % ARR_LEN;
arr[i] = arr[idx];
arr[idx] = tmp;
}
}
void bubbleSort(int arr[])
{
cout << "===정렬===" << endl;
int tmp;
for (int i = 0; i < ARR_LEN-1; i++)
{
if (arr[i] > arr[i + 1])
{
tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
i = -1;
}
}
}
728x90
반응형
'C++' 카테고리의 다른 글
C++ (STL) Vector 정리 (0) | 2021.12.22 |
---|---|
C++ 배열로 stack 구현해보기 (0) | 2021.12.21 |
C++ 피보나치 수열 구현하기 (1) | 2021.12.21 |
C++ malloc/free 와 new/delete의 차이 (0) | 2021.12.20 |