Advertisement
Guest User

7-1

a guest
Apr 21st, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.28 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int sorting_function(int *arr, int *arr_len){
  5.     int mem;
  6.     int i, j, t;
  7.     for ( t = *arr_len / 2; t > 0; t = t/2) {
  8.         for ( i = t; i < *arr_len; i++) {
  9.             mem = arr[i];
  10.             for ( j = i; j >= t ; j = j - t) {
  11.                 if (mem < arr[j - t]){
  12.                     arr[j] = arr[j - t];
  13.                 }
  14.                 else{
  15.                     break;
  16.                 }
  17.             }
  18.             arr[j] = mem;
  19.         }
  20.     }
  21.     return 0;
  22. }
  23.  
  24. int main() {
  25.     int *mass;
  26.     int n;
  27.     double f = 1.247;
  28.     double t = n - 1;
  29.     scanf("%d", &n);
  30.     mass = (int*)malloc(n * sizeof(int));
  31.     for (int i = 0; i < n; i++){
  32.         scanf("%d", &mass[i]);
  33.     }
  34.  
  35.     sorting_function(mass, &n);
  36.  
  37.     for (int i = 0; i < n; i++) {
  38.         if (i == n - 1){
  39.             printf("%d\n", mass[i]);
  40.             break;
  41.         }
  42.         printf("%d ", mass[i]);
  43.     }
  44.     return 0;
  45. }
  46. 737-1_gma@timp:~$ cat 737-1_gma-7-1.c
  47. #include <stdio.h>
  48. #include <stdlib.h>
  49.  
  50. int sorting_function(int *numbers, int left, int right) {
  51.     int pivot;
  52.     int l_hold = left;
  53.     int r_hold = right;
  54.     pivot = numbers[left];
  55.     while (left < right)
  56.     {
  57.         while ((numbers[right] >= pivot) && (left < right))
  58.             right--;
  59.         if (left != right)
  60.         {
  61.             numbers[left] = numbers[right];
  62.             left++;
  63.         }
  64.         while ((numbers[left] <= pivot) && (left < right))
  65.             left++;
  66.         if (left != right)
  67.         {
  68.             numbers[right] = numbers[left];
  69.             right--;
  70.         }
  71.     }
  72.     numbers[left] = pivot;
  73.     pivot = left;
  74.     left = l_hold;
  75.     right = r_hold;
  76.     if (left < pivot)
  77.         sorting_function(numbers, left, pivot - 1);
  78.     if (right > pivot)
  79.         sorting_function(numbers, pivot + 1, right);
  80.     return 0;
  81. }
  82.  
  83. int main() {
  84.     int *mass;
  85.     int n;
  86.     scanf("%d", &n);
  87.     mass = (int*)malloc(n * sizeof(int));
  88.     for (int i = 0; i < n; i++){
  89.         scanf("%d", &mass[i]);
  90.     }
  91.  
  92.     sorting_function(mass, 0, n - 1);
  93.  
  94.     for (int i = 0; i < n; i++) {
  95.         if (i == n - 1){
  96.             printf("%d\n", mass[i]);
  97.             break;
  98.         }
  99.         printf("%d ", mass[i]);
  100.     }
  101.     return 0;
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement