Advertisement
CherMi

Lab6 0.9

Apr 2nd, 2020
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.67 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <time.h>
  3.  
  4. int main()
  5. {
  6.     int arr1[10] = {6, 1, 9, 5, 0, 3, 7, 4, 2, 8};
  7.     int i, j, tmp, count;
  8.     clock_t  start, end;
  9.  
  10.     //Пузырёк
  11.     count = 0;
  12.     printf("Bubble: \n");
  13.     start = clock();
  14.     for(i = 0; i < 10; i++)
  15.     {
  16.         for (j = i; j < 10; j++)
  17.         {
  18.             if (arr1[j] > arr1[i])
  19.             {
  20.                 tmp = arr1[i];
  21.                 arr1[i] = arr1[j];
  22.                 arr1[j] = tmp;
  23.                 count++;
  24.             }
  25.         }
  26.         printf("Stage %d:", i);
  27.         for (j = 0; j < 10; j++)
  28.         {
  29.             printf(" %d", arr1[j]);
  30.         }
  31.         printf("\n");
  32.     }
  33.     end = clock();
  34.     printf("Comparision count: %d\n", count);
  35.     printf("Time: %lf seconds\n", (double)(end - start) / CLOCKS_PER_SEC);
  36.  
  37.     //Бинарные включения
  38.     printf("Binary: \n");
  39.     int arr2[10] = { 6, 1, 9, 5, 0, 3, 7, 4, 2, 8 };
  40.     int left, right, middle, cur;
  41.     count = 0;
  42.  
  43.     printf("Stage 0:");
  44.     for (j = 0; j < 10; j++)
  45.     {
  46.         printf(" %d", arr2[j]);
  47.     }
  48.     printf("\n");
  49.    
  50.     start = clock();
  51.     for (i = 1; i < 10; i++)
  52.     {
  53.         if (arr2[i - 1] < arr2[i])
  54.         {
  55.             count++;
  56.             cur = arr2[i]; //Текущий элемент
  57.             left = i - 1;
  58.             right = 0;
  59.  
  60.             do
  61.             {
  62.                 middle = (left + right) / 2;
  63.                 count++;
  64.                 if (arr2[middle] > cur)
  65.                 {
  66.                     right = middle + 1;
  67.                 }
  68.                 else
  69.                 {
  70.                     left = middle - 1;
  71.                 }
  72.             } while (left >= right);
  73.  
  74.             for (j = i - 1; j >= right; j--) //Сдвиг массива
  75.             {
  76.                 arr2[j + 1] = arr2[j];
  77.             }
  78.             arr2[right] = cur;
  79.         }
  80.         printf("Stage %d:", i);
  81.         for (j = 0; j < 10; j++)
  82.         {
  83.             printf(" %d", arr2[j]);
  84.         }
  85.         printf("\n");
  86.     }
  87.     end = clock();
  88.     printf("Comparision count: %d\n", count);
  89.     printf("Time: %lf seconds\n", (double)(end - start) / CLOCKS_PER_SEC);
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement