Advertisement
Guest User

Untitled

a guest
Apr 9th, 2020
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.21 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. void merge(int str[], int x ,int y,int z) {
  6.     int i,j,k;
  7.     int size1 = y - x +1;
  8.     int size2 = z - y;
  9.     int first[size1], second[size2];
  10.  
  11.     for (i=0;i<size1;i++) {
  12.         first[i] =  str[x + 1];
  13.     }
  14.    
  15.     for (j=0;j<size2;j++) {
  16.         second[i] = str[y + 1 + j];
  17.     }
  18.    
  19.     i = 0; j = 0; k = x;
  20.    
  21.     while (i < size1 && j < size2) {
  22.         if(first[i] <= second[j]) {
  23.             str[k] = first[i];
  24.             i++;
  25.         }
  26.         else {
  27.             str[k] = second[j];
  28.             j++;
  29.         }
  30.         k++;
  31.     }
  32.    
  33.     while (i < size1) {
  34.         str[k] = first[i];
  35.         i++;
  36.         k++;
  37.     }
  38.    
  39.     while (j < size2) {
  40.         str[k] = second[j];
  41.         j++;
  42.         k++;
  43.     }
  44. }
  45.  
  46. void mergeSort(int str[], int x, int z) {
  47.     if (x < z) {
  48.         int y;
  49.        
  50.         y = x + (z - x) / 2;
  51.        
  52.         mergeSort(str, x, y);
  53.        
  54.         mergeSort(str, y + 1, z);
  55.        
  56.         merge(str, x, y, z);
  57.     }
  58. }
  59. int main()
  60. {
  61.     int i,j,r;
  62.  
  63.     srand((int) time(NULL));
  64.    
  65.     int str[10];
  66.     int str_size = (int) sizeof(str)/sizeof(str[0]);
  67.    
  68.     printf("\nDay so ngau nhien la: ");
  69.    
  70.     for(i=0;i<10;i++) {
  71.         str[i] = rand();
  72.         printf("%d ",str[i]);
  73.     }
  74.    
  75.     mergeSort(str, 0, str_size - 1);
  76.    
  77.     printf("\n\nDay so da sap xep la: ");
  78.    
  79.     for (i=0;i < 10;i++) {
  80.         printf("%d ", str[i]);
  81.     }
  82.    
  83.     return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement