코드
#include <iostream>
using namespace std;
// list 라고 이름 붙인 변수에 주소값이 들어있으니 * 로 값을 가져온다.
void merge(int* list, int left, int mid, int right)
{
int sorted[8];
int i = left;
// 두 번째 배열의 시작점
int j = mid+1;
int k = left;
while(i<=mid && j<=right)
{
if(list[i] < list[j])
sorted[k++] = list[i++];
else
sorted[k++] = list[j++];
}
while(i<=mid)
sorted[k++] = list[i++];
while(j<=right)
sorted[k++] = list[j++];
for(int i=left; i<k; ++i)
list[i] = sorted[i];
}
void mergesort(int* list, int left, int right)
{
int mid;
if(left<right)
{
mid = (left+right)/2;
mergesort(list, left, mid);
mergesort(list, mid+1, right);
merge(list, left, mid, right);
}
}
int main(void)
{
int list[8] = {21, 10, 12, 20, 25, 13, 15, 22};
// 배열은 함수에 주소값으로 전달된다.
mergesort(list, 0, 7);
for(int i=0; i<8; ++i)
cout<<list[i]<<' ';
}
'개발 > 알고리즘' 카테고리의 다른 글
21년 8월 알고리즘 스터디 2주차 (0) | 2022.07.02 |
---|---|
21년 8월 알고리즘 스터디 1주차 (0) | 2022.07.02 |
백준 13549번 : 숨바꼭질3 (0) | 2020.10.11 |
백준 12865번 : 평범한 배낭 (0) | 2020.10.11 |
백준 9663번 : N-Queen (0) | 2020.10.10 |