사용자가 원하는 대로 입력받고 입력받은 것을 토대로 버블 정렬하기 위해서 배열 말고 벡터를 선택했다. 배열은 길이를 유동적으로 하기 어렵지만 벡터는 쉽기 때문이다.
버블 정렬은 인접해 있는 두 개의 값을 비교해 자료 교환을 하는 것이다
오름차순 정렬 : 두 개의 값을 비교해 큰 값을 오른쪽으로 보냄
내림차순 정렬 : 두 개의 값을 비교해 작은 값을 오른쪽으로 보냄
장점 : 여러 번 값을 비교하기 때문에 안전성 있다.
: 두 개의 값을 비교해 이동시키기 때문에 단순하다.
단점 : 다른 정렬에 비해 연산 시간이 오래 걸린다.
#include <iostream>
#include <vector>
using std::vector;
void ascending_sort(vector<int> &inputVec);
void descending_sort(vector<int> &inputVec);
int main()
{
int value(0);
vector<int> vec;
std::cout << "값을 입력해주세요. 0이 입력되면 입력이 종료됩니다." << std::endl;
while (true) {
std::cin >> value;
if (value == 0) {
break;
}
vec.push_back(value);
}
std::cout << "입력한 수 : ";
for (int i = 0; i < vec.size(); i++) {
std::cout <<vec.at(i) << " ";
}
std::cout <<"\n\n"<< std::endl;
//ascending_sort(vec);
//descending_sort(vec);
for (int i = 0; i < vec.size(); i++) {
std::cout << vec.at(i) << " ";
}
return 0;
}
void ascending_sort(vector<int> &inputVec)
{
int tmp(0);
for (int q = 0; q < inputVec.size() - 1; ++q) {
for (int i = 0; i < inputVec.size() - 1; ++i) {
if (inputVec.at(i) > inputVec.at(i + 1)) {
tmp = inputVec.at(i);
inputVec.at(i) = inputVec.at(i + 1);
inputVec.at(i + 1) = tmp;
}
}
}
}
void descending_sort(vector<int> &inputVec)
{
int tmp(0);
for (int q = 0; q < inputVec.size() - 1; ++q) {
for (int i = 0; i < inputVec.size() - 1; ++i) {
if (inputVec.at(i) < inputVec.at(i + 1)) {
tmp = inputVec.at(i);
inputVec.at(i) = inputVec.at(i + 1);
inputVec.at(i + 1) = tmp;
}
}
}
}
반응형