/*Merge Sort Method*/#include<stdio.h>#include<stdlib.h>#include<time.h>#defineMAX1 10#defineMAX2 10#defineSWAP (x, y) {int t; t = x; x = y; y = t;}intPartitionint[],int,int);voidQuicksortint[],int,int);voidMergeSort (int[],int,int[],int,int[]);intMainvoid) { intNUMBER1[MAX1] = {0}; intNUMBER2[MAX1] = {0}; intNUMBER3[MAX1+MAX2] = {0}; intI, Num; Srand (Time (NULL)); printf ("before sorting:"); printf ("\nnumber1[]:"); for(i =0; i < MAX1; i++) {Number1[i]= rand ()% -; printf ("%d", Number1[i]); } printf ("\nnumber2[]:"); for(i =0; i < MAX2; i++) {Number2[i]= rand ()% -; printf ("%d", Number2[i]); } //sort two records firstQuicksort (Number1,0, max1-1); Quicksort (Number2,0, max2-1); printf ("\ n after sorting:"); printf ("\nnumber1[]:"); for(i =0; i < MAX1; i++) printf ("%d", Number1[i]); printf ("\nnumber2[]:"); for(i =0; i < MAX2; i++) printf ("%d", Number2[i]); //Merge Sortmergesort (Number1, MAX1, Number2, MAX2, Number3); printf ("\ n after merging:"); for(i =0; i < MAX1+MAX2; i++) printf ("%d", Number3[i]); printf ("\ n"); return 0;}intPartitionintNumber[],intLeftintRight ) { intI, J, S; S=Number[right]; I= left-1; for(j = left, J < right; J + +) { if(Number[j] <=s) {i++; SWAP (Number[i], number[j]); }} SWAP (Number[i+1], number[right]); returni+1;}voidQuicksortintNumber[],intLeftintRight ) { intQ; if(Left <Right ) {Q=partition (number, left, right); Quicksort (number, left, Q-1); Quicksort (number, q+1, right); }}voidMergeSort (intNumber1[],intMintNumber2[],intNintnumber3[]) { inti =0, j =0, k =0; while(I < M && J <N) {if(Number1[i] <=Number2[j]) number3[k+ +] = number1[i++]; Elsenumber3[k+ +] = number2[j++]; } while(I <M) Number3[k+ +] = number1[i++]; while(J <N) Number3[k+ +] = number2[j++];}
Operation Result:
"Merge Sort Method"