Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- void merge(int leftArr[], int rightArr[], int mainArray[], int leftLength, int rightLength){
- int leftIndex, rightIndex, mainIndex;
- leftIndex = rightIndex = mainIndex = 0;
- while(leftIndex < leftLength && rightIndex < rightLength){
- if(leftArr[leftIndex] < rightArr[rightIndex]){
- mainArray[mainIndex] = leftArr[leftIndex];
- leftIndex++;
- }
- else{
- mainArray[mainIndex] = rightArr[rightIndex];
- rightIndex++;
- }
- mainIndex++;
- }
- while(leftIndex < leftLength){
- mainArray[mainIndex] = leftArr[leftIndex];
- mainIndex++;
- leftIndex++;
- }
- while(rightIndex < rightLength){
- mainArray[mainIndex] = rightArr[rightIndex];
- mainIndex++;
- rightIndex++;
- }
- printf("\nMerge:\n");
- printArr(mainArray, leftLength+rightLength);
- printf("\n");
- }
- void mergeSort(int mainArr[], int mainArrLength){
- int index = 0;
- if(mainArrLength < 2){
- return;
- }
- int midIndex = mainArrLength/2;
- int* leftArr = (int*)malloc(midIndex * sizeof(int));
- int* rightArr = (int*)malloc((mainArrLength - midIndex) * sizeof(int));
- for(index=0; index<midIndex; index++){
- leftArr[index] = mainArr[index];
- }
- printf("Left Array: \n");
- printArr(leftArr,midIndex);
- for(index=midIndex; index < mainArrLength; index++){
- rightArr[index - midIndex] = mainArr[index];
- }
- printf("Right Array: \n");
- printArr(rightArr, midIndex);
- mergeSort(leftArr, midIndex);
- mergeSort(rightArr, mainArrLength - midIndex);
- merge(leftArr, rightArr, mainArr, midIndex, mainArrLength - midIndex);
- return;
- }
- void printArr(int ArrToPrint[], int lengthArr){
- int index;
- for(index=0; index<lengthArr; index++){
- printf("%d ",ArrToPrint[index]);
- }
- printf("\n");
- }
- int main()
- {
- int mainArr[] = {2, 4, 1, 6, 8, 5, 3, 7};
- int index = 0;
- int lengthArr = sizeof(mainArr)/sizeof(mainArr[0]);
- printf("Before Sorting: \n");
- printArr(mainArr, lengthArr);
- printf("====================== Sorting Begins =====================\n\n");
- mergeSort(mainArr, lengthArr);
- printf("After Sorting: \n");
- printArr(mainArr, lengthArr);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement