1 분 소요

버블 정렬

버블정렬

버블이라는 이름을 보면 가장 큰 수가 점점 거품처럼 올라오는? 그런 느낌! 큰 수부터 정렬이 되는 느낌이다.

코드

#include <bits/stdc++.h>
using namespace std;

void printVec(const vector<int>& vec) {
    for (int i = 0; i < vec.size(); i++) {
        cout << vec[i] << ' ';
    }
    cout << '\n';
}

vector<int> bubbleSort(vector<int> target) {
    int n = target.size();
    int temp;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (target[j] > target[j+1]) {
                temp = target[j];
                target[j] = target[j+1];
                target[j+1] = temp;
            }
            printVec(target);
        }
    }
    return target;
}

int main() {
    int arr[] = {5, 3, 1, 4, 2};
    vector<int> target(arr, arr+sizeof(arr) / sizeof(arr[0]));
    vector<int> result = bubbleSort(target);
    printVec(result);
    return 0;
}

삽입 정렬

삽입정렬

삽입이라는 말 처럼 인덱스 1기준으로 앞쪽과 비교를 하면서 key보다 크면 vec[j]를 뒤로 한 칸씩 민다. 그 후 자기 자리에 삽입한다.

코드

#include <bits/stdc++.h>
using namespace std;

void printVec(vector<int> vec) {
    int n = vec.size();
    for (int i = 0; i < n; i++) {
        cout << vec[i] << ' ';
    }
    cout << '\n';
}
vector<int> insertSort(vector<int> vec) {
    int j;
    for (int i = 1; i < vec.size(); i++) {
        int key = vec[i]; // key를 기준으로 key가 작으면 그 앞에 위치 시킴
        for (j = i - 1; j >= 0; j--) {
            if (vec[j] > key) {
                vec[j+1] = vec[j]; // key보다 크다면 오른쪽으로 민다
            }
            else {
                break;
            }
        }
        vec[j+1] = key;
        printVec(vec);
    }
    return vec;
}
int main() {
    int arr[] = {4, 5, 2, 3, 1};
    vector<int> vec(arr, arr+sizeof(arr)/sizeof(arr[0]));
    printVec(vec);
    vector<int> result = insertSort(vec);
}

댓글남기기