20 Mergesort Demo


การประกาศฟังก์ชั่น

  

#include <stdio.h>
#include <stdlib.h>
#define MAX 20
int tempArray[MAX];
void sort(int a[],int min,int max);
void merge(int a[],int low,int mid,int high);
void print(int a[],int n);
void line();
int main()
{
int i,n,a[MAX];
printf("How many number (MAX 20): ");
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
print(a,n-1);
sort(a,0,n-1);
printf("After sort : ");
print(a,n-1);
return 0;
}
void sort(int a[],int min,int max){
int mid;
if(min<max){
mid=(min+max)/2;
sort(a,min,mid);
sort(a,mid+1,max);
merge(a,min,mid,max);
}
}
void merge(int a[],int low,int mid,int high){
int l=low;
int r=mid+1;
int k=low;
while((l<=mid)&&(r<=high) ){
if(a[l]<a[r])
tempArray[k++]=a[l++];
else
tempArray[k++]=a[r++];
}
while(l<=mid)
tempArray[k++]=a[l++];
while(r<=mid)
tempArray[k++]=a[r++];
for(l=low;l<k;l++)
a[l]=tempArray[l];
}
void print(int a[],int n){
int i;
line();
for(i=0;i<=n;i++)
printf("%d ",a[i]);
line();
}
void line(){
printf("\n==================\n");
}
view raw B20_MergeSort.c hosted with ❤ by GitHub