Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* This code will take input for 10 integers given by the user
- into an array, sort them with a recursive merge function
- and print the updated array in ascending order. */
- #include <stdio.h>
- #define ARRSIZE 10
- void merge_sort (int arr[], int temp[], int left, int right);
- void merge (int arr[], int temp[], int left, int mid, int right);
- int main (void){
- int arr[ARRSIZE], temp[ARRSIZE], left, right, i;
- arr[0] = 3;
- arr[1] = 5;
- arr[2] = 7;
- arr[3] = 6;
- arr[4] = 8;
- arr[5] = 9;
- arr[6] = 10;
- arr[7] = 2;
- arr[8] = 1;
- arr[9] = 4;
- left = 0;
- right = ARRSIZE-1;
- merge_sort(arr, temp, left, right);
- printf("\nHere is your updated array:");
- printf("\n{");
- for(i=0;i<ARRSIZE;i++){
- printf("%d,", arr[i]);
- }
- printf("}");
- return 0;
- }
- void merge_sort (int arr[], int temp[], int left, int right){
- if(left<right){
- int mid = (right+left)/2;
- merge_sort(arr, temp, left, mid);
- merge_sort(arr, temp, mid+1, right);
- merge(arr, temp, left, mid, right);
- }
- }
- void merge (int arr[], int temp[], int left, int mid, int right){
- int i, j, tempi = left;
- for (i = left, j = 1 + mid; i <= mid && j <= right; ++tempi)
- {
- if (arr[i] < arr[j]) temp[tempi] = arr[i++];
- else temp[tempi] = arr[j++];
- }
- if (i > mid) right = tempi - 1;
- for (; tempi <= right; ++tempi, ++i) temp[tempi] = arr[i];
- for(i=left; i<=right; ++i){
- arr[i] = temp[i];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment