Advertisement
hinagawa

Все сортировки

Oct 18th, 2018
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.66 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void bubblesort(int *a, int n)//пузырек
  5. {
  6.  
  7.     for (int i = 0; i < n; i++)
  8.         for (int j = 0; j < n - 1 - i; j++)
  9.             if (a[j] > a[j + 1])
  10.                 swap (a[j], a[j + 1]);
  11. }
  12.  
  13. void inssort(int*a, int n)//вставка
  14. {
  15.     int i, temp, j;
  16.     for (i = 0; i < n; i++)
  17.     {
  18.         temp = a[i];
  19.         for (j = i - 1; j > 0 && a[j] > temp; j--)
  20.             a[j + 1] = a[j];
  21.         a[j + 1] = a[j];
  22.         a[j + 1] = temp;
  23.  
  24.     }
  25. }
  26. void merge(int*a, int left, int right)//слияние
  27. {
  28.     int mid = (left + right) / 2;
  29.     int *res = new int[right + left];
  30.     int i = left;
  31.     int j = mid;
  32.     for (int k = 0; k < right - left; k++)
  33.     {
  34.         if (a[i] < a[j] )
  35.         {
  36.             res[k] = a[i];
  37.             i++;
  38.         }
  39.         else
  40.         {
  41.             if (i < mid && j < right)
  42.             {
  43.                 res[k] = a[j];
  44.                 j++;
  45.             }
  46.             else
  47.             {
  48.                 if (i < mid)
  49.                 {
  50.                     res[k] = a[i];
  51.                     i++;
  52.                 }
  53.                 else
  54.                 {
  55.                     res[k] = a[j];
  56.                     j++;
  57.                 }
  58.             }
  59.         }
  60.        
  61.     }
  62. for (int k = 0; k < right; k++)
  63.             a[left + k] = res[k];
  64.  
  65. }
  66.  
  67.  
  68. void qSort(int *a, int left, int right)// быстрая
  69. {
  70.     int mid = (left + right) / 2;
  71.     int l = left;
  72.     int r = right;
  73.     int t = a[mid];
  74.     do
  75.     {
  76.         while (a[l] < t)
  77.             l++;
  78.         while (a[r] > t)
  79.             r--;
  80.         if (l > r)
  81.         {
  82.             swap(a[l], a[r]);
  83.             l++;
  84.             r--;
  85.         }
  86.     } while (l <= r);
  87.  
  88.  
  89.     if (left < r)
  90.         qSort(a, left, r);
  91.     if (l < right)
  92.         qSort(a, l, right);
  93.  
  94. }
  95. void CountingSort(int *a, int *c, int n, int k)// подсчетом
  96. {
  97.     for (int i = 0; i < k; i++) {
  98.         c[i] = 0;
  99.     }
  100.     for (int i = 0; i < n; i++) {
  101.         c[a[i]] = c[a[i]] + 1;
  102.     }
  103.     int i = 0;
  104.     for (int j = 0; j < k; j++) {
  105.         while (c[j] != 0) {
  106.             a[i] = j;
  107.             c[j]--;
  108.             i++;
  109.         }
  110.     }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement