티스토리 뷰
반응형
개발자의 C언어 독학 기초 # 기본 연산
모든 강의 자료 : www.codingnow.co.kr/
합병정렬
#include <stdio.h>
#include <windows.h> //system 명령 실행을 위해
//합병정렬
#define MAX_SIZE 60000 //데이터의 개수 지정
int static sorted[MAX_SIZE]; //합병정렬에서 사용할 데이터를 저장할 배열
void Merge(int var[], int left, int mid, int right)
{
int i, j, k, l;
i=left, j=mid+1; k=left;
while(i<=mid && j<=right)
{
if(var[i]<=var[j]){
sorted[k++]=var[i++];
}else{
sorted[k++]=var[j++];
}
}
if(i>mid){
for(l=j; l<=right; l++){
sorted[k++]=var[l];
}
}else{
for(l=i; l<=right; l++){
sorted[k++]=var[l];
}
}
for(l=left; l<=right; l++)
{
var[l]=sorted[l];
}
}
void MergeSort(int var[], int left, int right)
{
int mid;
if(left<right)
{
mid=(left+right)/2;
MergeSort(var, left, mid);
MergeSort(var, mid+1, right);
Merge(var,left,mid,right);
}
}
void main(void)
{
system("chcp 65001"); //gcc 한글 깨짐
system("cls"); //화면지움
int TargetArr[10] = { 7, 2, 3, 5, 4, 8, 6, 9, 10, 1 };
//정렬하기전 값 출력
printf("\n정렬 전 : ");
for (int i = 0; i < 10; i++)
{
printf("%d ", TargetArr[i]);
}
MergeSort(TargetArr, 0, 10);//정렬 함수 호출
printf("\n\n");
printf("정렬 후 : ");
for (int i = 0; i < 10; i++)
{
printf("%d ", TargetArr[i]);
}
printf("\n\n");
return;
}
반응형
'C언어 강의' 카테고리의 다른 글
개발자의 C언어 독학 기초 # 응용편 2의보수 (bit연산)구하기 (0) | 2020.04.15 |
---|---|
개발자의 C언어 독학 기초 # 응용 / 2진탐색 (0) | 2020.04.14 |
개발자의 C언어 독학 기초 # 응용 / 퀵정렬 (0) | 2020.04.14 |
개발자의 C언어 독학 기초 # 응용 / 선택정렬 (0) | 2020.04.14 |
개발자의 C언어 독학 기초 # 응용 / 삽입정렬 (0) | 2020.04.14 |