자료구조: 일차원 배열
시간복잡도: 모든 경우에 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;
}
개념 요약 : (오름차순 기준) 앞에서부터 두 개씩 비교하면서 더 큰 값을 뒤로 밀고(교환), 배열을 순환하며 이 과정을 반복해서 맨 큰 값부터 맨 뒤에 쌓는 방식