#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define ARR_MAX 20
int sorted[ARR_MAX];
void merge(int Data[],int Left, int middle, int right){
int i = Left;
int m = Left;
int j = middle + 1;
int AAA = 0;
while(i <= middle && j <= right){
if(Data[i] <= Data[j]){
sorted[m++] = Data[i++];
}
else{
sorted[m++] = Data[j++];
}
}
if(i > middle){
for(AAA = j ; AAA <= right; AAA++){
sorted[m++] = Data[AAA];
}
}
else{
for(AAA = i ; AAA <= middle; AAA++){
sorted[m++] = Data[AAA];
}
}
for(AAA = Left; AAA <= right; AAA++){
Data[AAA] = sorted[AAA];
}
}
void merge_sort(int Data[],int Left, int right){
int middle = 0;
if(Left < right){
middle = (Left + right) / 2;
merge_sort(Data,Left,middle);
merge_sort(Data,middle+1,right);
merge(Data,Left,middle,right);
}
}
int main()
{
int arr[ARR_MAX] = { 0,};
int i =0;
char c;
srand(time(NULL));
for(i=0; i < ARR_MAX ; i++){
arr[i] = rand() % 20;
}
for(i=0; i < ARR_MAX ; i++){
printf("%3d",arr[i]);
}
printf("\n");
merge_sort(arr, 0, ARR_MAX-1);
for(i=0; i < ARR_MAX ; i++){
printf("%3d",arr[i]);
}
printf("\n");
return 0;
}
'Soft Ware > 자료구조 및 알고리즘' 카테고리의 다른 글
트리에서 전위순회, 중위순회, 하위순회 (0) | 2012.04.17 |
---|---|
- 트리 - LCRS 원하는 높이 부분만 출력 (0) | 2012.04.17 |
세이커 정렬입니다 (0) | 2012.04.16 |
버블 정렬입니다 (0) | 2012.04.16 |
정렬 !! -선택정렬- (0) | 2012.04.16 |