동빈나의 머지소트
#include <bits/stdc++.h>
using namespace std;
int number = 8;
int sorted[8]; //정렬 배열은 받드시 전역 배열
void merge(int a[], int m, int middle, int n){ //m : 시작점, middle : 중간점, n : 끝점
int i = m;
int j = middle+1;
int k = m;
//작은 순서대로 배열에 삽입
while(i <= middle && j <= n){
if(a[i] <= a[j]){
sorted[k] = a[i];
i++;
}
else{
sorted[k] = a[j];
j++;
}
k++;
}
if(i > middle){
for(int t = j; t<=n; t++){
sorted[k] = a[t];
k++;
}
}
else{
for(int t=i; t<=middle; t++){
sorted[k] = a[t];
k++;
}
}
//sorted 에서 a배열로 옮겨준다
for(int t=m; t<=n; t++){
a[t] = sorted[t];
}
}
void mergesort(int a[], int m, int n){
//크기가 1보다 큰 경우
if(m < n){
int middle = (m+n)/2;
mergesort(a, m, middle);
mergesort(a, middle+1, n);
merge(a,m, middle, n);
}
}
int main()
{
int array[8] = {7,6,5,8,3,5,9,1};
mergesort(array, 0, number-1);
for(int t=0; t<number; t++){
printf("%d ", array[t]);
}
return 0;
}
'정보올림피아드-KOI > 기초 문법 문제' 카테고리의 다른 글
함수3 - 자가진단3 (0) | 2022.01.07 |
---|---|
머지 정렬 Merge Sort (0) | 2021.12.31 |
quick sort (퀵정렬) - 내림차순 (0) | 2021.12.31 |
함수3 - 형성평가6 (0) | 2021.12.30 |
591 : 함수3 - 자가진단6 (0) | 2021.12.30 |