Advertisement
green1ant

31-1

Jan 20th, 2019
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.14 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void sort(int *ms, int k)
  5. {
  6.     int i, j, n;
  7.     int gap; // шаг сортировки
  8.     int flg; // флаг окончания этапа сортировки
  9.     for(gap = k/2; gap > 0; gap /= 2)
  10.         do
  11.         {
  12.             flg = 0;
  13.             for(i = 0, j = gap; j < k; i++, j++)
  14.                 if(*(ms+i) > *(ms+j)) // сравниваем отстоящие на gap элементы
  15.                 {
  16.                     n = *(ms+j);
  17.                     *(ms+j) = *(ms+i);
  18.                     *(ms+i) = n;
  19.                     flg = 1; // есть ещё нерассортированные данные
  20.                 }
  21.         }
  22.         while (flg);   // окончание этапа сортировки
  23. }
  24.  
  25. int main()
  26. {
  27.     printf("Start\n");
  28.  
  29.     long *a;
  30.     int n;
  31.  
  32.     printf("Enter n: ");
  33.     scanf("%d", &n);
  34.  
  35.     a = (int*)malloc(n * sizeof(int));
  36.  
  37.     for (int i = 0; i < n; i++){
  38.         printf("a[%d] = ", i);
  39.         scanf("%d", &a[i]);
  40.     }
  41.  
  42.     sort(a, n);
  43.  
  44.     for(int i = 0; i < n; i++){
  45.         printf("%d, ", a[i]);
  46.     }
  47.  
  48.     return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement