MPogoda

Untitled

Feb 17th, 2013
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.53 KB | None | 0 0
  1. /* This code will take input for 10 integers given by the user
  2. into an array, sort them with a recursive merge function
  3. and print the updated array in ascending order. */
  4.  
  5. #include <stdio.h>
  6. #define ARRSIZE 10
  7.  
  8. void merge_sort (int arr[], int temp[], int left, int right);
  9. void merge (int arr[], int temp[], int left, int mid, int right);
  10.  
  11. int main (void){
  12.     int arr[ARRSIZE], temp[ARRSIZE], left, right, i;
  13.  
  14.     arr[0] = 3;
  15.     arr[1] = 5;
  16.     arr[2] = 7;
  17.     arr[3] = 6;
  18.     arr[4] = 8;
  19.     arr[5] = 9;
  20.     arr[6] = 10;
  21.     arr[7] = 2;
  22.     arr[8] = 1;
  23.     arr[9] = 4;
  24.     left = 0;
  25.     right = ARRSIZE-1;
  26.  
  27.     merge_sort(arr, temp, left, right);
  28.  
  29.     printf("\nHere is your updated array:");
  30.     printf("\n{");
  31.     for(i=0;i<ARRSIZE;i++){
  32.         printf("%d,", arr[i]);
  33.     }
  34.     printf("}");
  35.  
  36.     return 0;
  37. }
  38.  
  39. void merge_sort (int arr[], int temp[], int left, int right){
  40.     if(left<right){
  41.         int mid = (right+left)/2;
  42.         merge_sort(arr, temp, left, mid);
  43.         merge_sort(arr, temp, mid+1, right);
  44.         merge(arr, temp, left, mid, right);
  45.     }
  46. }
  47.  
  48. void merge (int arr[], int temp[], int left, int mid, int right){
  49.     int i, j, tempi = left;
  50.     for (i = left, j = 1 + mid; i <= mid && j <= right; ++tempi)
  51.     {
  52.       if (arr[i] < arr[j]) temp[tempi] = arr[i++];
  53.       else                  temp[tempi] = arr[j++];
  54.     }
  55.     if (i > mid) right = tempi - 1;
  56.     for (; tempi <= right; ++tempi, ++i) temp[tempi] = arr[i];
  57.     for(i=left; i<=right; ++i){
  58.         arr[i] = temp[i];
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment