Advertisement
Guest User

SORTIROV OCHKA LINEAL

a guest
Jan 22nd, 2020
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.44 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include "SORTW.H"
  5.  
  6. void SelectionSort(float* a, int n, int* n_cmp, int* n_move)
  7. {
  8.     int i, j, nmin;
  9.  
  10.     for (i = 0; i < n - 1; i++)
  11.     {
  12.         nmin = i;
  13.         for (j = i + 1; j < n; j++)
  14.         {
  15.             (*n_cmp)++;
  16.             if (a[j] < a[nmin])
  17.                 nmin = j;
  18.         }
  19.         Swap(&a[nmin], &a[i]);
  20.         (*n_move)++;
  21.     }
  22. }
  23.  
  24. void BSort1(float* a, int n, int* n_cmp, int* n_move)
  25. {
  26.     int i, j;
  27.  
  28.     for (i = 0; i < n - 1; i++)
  29.         for (j = 0; j < n - 1; j++)
  30.         {
  31.             (*n_cmp)++;
  32.             if (a[j] > a[j + 1])
  33.             {
  34.                 Swap(&a[j], &a[j + 1]);
  35.                 (*n_move)++;
  36.             }
  37.         }
  38. }
  39.  
  40. void BSort2(float* a, int n, int* n_cmp, int* n_move)
  41. {
  42.     int i, j;
  43.  
  44.     for (i = 0; i < n - 1; i++)
  45.         for (j = 0; j < n - 1 - i; j++)
  46.         {
  47.             (*n_cmp)++;
  48.             if (a[j] > a[j + 1])
  49.             {
  50.                 Swap(&a[j], &a[j + 1]);
  51.                 (*n_move)++;
  52.             }
  53.         }
  54. }
  55.  
  56. void BSort3(float* a, int n, int* n_cmp, int* n_move)
  57. {
  58.     int j, last = n - 2, changed;
  59.  
  60.     while (last >= 0)
  61.     {
  62.         changed = -1;
  63.         for (j = 0; j <= last; j++)
  64.         {
  65.             (*n_cmp)++;
  66.             if (a[j] > a[j + 1])
  67.             {
  68.                 Swap(&a[j], &a[j + 1]);
  69.                 (*n_move)++;
  70.                 changed = j - 1;
  71.             }
  72.         }
  73.         last = changed;
  74.     }
  75. }
  76.  
  77. void InsertionSort(float* a, int n, int* n_cmp, int* n_move)
  78. {
  79.     int i, j;
  80.     float x;
  81.  
  82.     for (i = 0; i < n; i++)
  83.     {
  84.         x = a[i];
  85.         j = i - 1;
  86.         (*n_cmp)++;
  87.         while (j >= 0 && a[j] > x)
  88.         {
  89.             a[j + 1] = a[j];
  90.             j--;
  91.             (*n_cmp)++;
  92.         }
  93.         a[j + 1] = x;
  94.         (*n_move)++;
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement