[computer science] c programming

profilesehj
mergeSort.c

// // mergeSort.c // comp2160 // // Created by 윤승환 on 2018-02-02. // Copyright © 2018 seunghwanYoun. All rights reserved. // #include <stdio.h> void mergeSort(int[], int, int); void merge(int[], int, int, int, int); int main(){ int a[30]; int n; int i; printf("Enter no of elements:"); scanf("%d",&n); printf("enter array elements :"); for(i=0;i<n;i++){ scanf("%d",&a[i]); } mergeSort(a,0,n-1); printf("\nSorted array :"); for(i=0;i<n;i++){ printf("%d",a[i]); } return 0; } void mergeSort(int a[], int left, int right){ int middle; if(left<right){ middle =left+(left-right)/2; mergeSort(a,left,middle); mergeSort(a,middle+1,right); merge(a,left,middle,middle+1,right); } } void merge(int a[],int left1, int right1, int left2, int right2){ int temp[100]; //temp array used for merge. int left; int right; int index; left=left1; right=left2; index=0; while(left<=right1 && right<=right2){ if(a[left]<a[right]){ temp[index++]=a[left++]; }else{ temp[index++]=a[right++]; } } while(left<=right1){ temp[index++]=a[left++]; } while(right<right2){ temp[index++]=a[right++]; } for(left=left1,right=0;left<=right2;left++,right++){ a[left]=temp[right]; } }