알고리즘/기초정렬

버블정렬

kms0204 2024. 12. 2. 01:04

자료구조: 일차원 배열

시간복잡도: 모든 경우에 O(N^2)

사용 목적 : 숫자의 내림차순 or 오름차순 정렬

#include <stdio.h>
#include <stdlib.h>

int main(){
    int arr[] = {1,2,3,4,5,6,7,8,9,10};
    int arr_size = sizeof(arr) / sizeof(int);


    //mixing
    for(int i = 0; i < arr_size; i++){
        int temp = arr[i];
        int random_num = rand() % arr_size;
        arr[i] = arr[random_num];
        arr[random_num] = temp;
    }


    //sorting
    for(int j =0; j < arr_size; j++){
        for(int i = 0; i < arr_size-1; i++){
            if(arr[i] > arr[i+1]){
                int temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
            }
        }
    }


    //print result
    for (int i = 0; i < arr_size; i++)
        printf("%d ", arr[i]);
        
    return 0;
}

개념 요약 : (오름차순 기준) 앞에서부터 두 개씩 비교하면서 더 큰 값을 뒤로 밀고(교환), 배열을 순환하며 이 과정을 반복해서 맨 큰 값부터 맨 뒤에 쌓는 방식

'알고리즘 > 기초정렬' 카테고리의 다른 글

삽입정렬  (0) 2024.12.02
선택정렬  (0) 2024.12.02