[알고리즘] Bubble Sort : 거품 정렬

minhyeok·2023년 3월 13일
0
post-thumbnail

Bubble Sort

#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
using namespace std;

vector<int> randomVector(int n) {
    vector<int> vec(n);
    srand(time(NULL));
    for (int i = 0; i < n; i++) {
        vec[i] = rand() % 100; // Generating random integers between 0 to 99
    }
    return vec;
}

void bubbleSort(vector<int> &arr,int n) {
    int i, j, temp;

    for (i = n - 1; i > 0; i--) {
        for (j = 0; j < i; j++) {
            if (arr[j] < arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}
int main() {
    int n = 6000; // Length of vector
    int start, end;
    vector<int> vec = randomVector(n);
    cout << "Random Vector: ";
    for (int i = 0; i < n; i++) {
        cout << vec[i] << " "; // Printing the generated vector
    }
    start = clock();
    bubbleSort(vec,n);
    end = clock();
    cout << "\nSorted Vector: ";
    for (int i = 0; i < n; i++) {
        cout << vec[i] << " "; // Printing the sorted vector
    }
    cout << endl;
    cout << n << ": " << end - start << endl;
    return 0;
}

N=10으로 하여 버블 정렬이 잘 작동되는지 확인해보았습니다.

N을 작게 했을 때는 시간이 제대로 측정되지 않아 N을 크게 하였습니다.
N= 1000에서 2000으로 증가했을 때 N이 2배가 됐으므로, N^2 증가가 확인되야 합니다.
즉, 4배가 되야 합니다.
time 이 10 에서 36으로 약 4배로 된 것을 확인할 수 있습니다.
또한 1000에서 4000으로 증가했을 때, N이 4배가 됐으므로 N^2 증가는 16배가 되어야 합니다.
time 이 10에서 184 로, 약 16배로 증가한 것을 확인할 수 있습니다.
위와 같이 N=5000, 6000 에서도 각각 약 N^2 값인 25배, 36배로 증가 된 것을 확인할 수 있습니다.

0개의 댓글