Advertisement
Mihajlo_K

7.4 Напредно сортирање

Mar 19th, 2019
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.22 KB | None | 0 0
  1. /* Да се напише функција за ефикасно сортирање на низа. Низата може да има 100000 елементи. */
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <time.h>
  6.  
  7. void my_sort(int *a, int n) {
  8.     // вашата функција за сортирање
  9.    
  10.     int pivot = a[n-1], i, temp;
  11.     int id = 0;
  12.     for (i = 0; i < n-1; i++)
  13.         {
  14.             if (a[i] < pivot)
  15.             {
  16.                 temp = a[i];
  17.                 a[i] = a[id];
  18.                 a[id] = temp;
  19.                 id++;
  20.             }
  21.         }
  22.    
  23.     temp = a[id];
  24.     a[id] = a[n-1];
  25.     a[n-1] = temp;
  26.    
  27.     if (id > 1)
  28.     {
  29.         my_sort(a, id);
  30.     }
  31.     if (n-id-1 > 1)
  32.     {
  33.         my_sort(a+id+1, n-id-1);
  34.     }
  35. }
  36.  
  37.  
  38. // не ја менувајте главната функција
  39. int main() {
  40.     int n, i;
  41.     scanf("%d", &n);
  42.     int *a = malloc(sizeof(int) * n);
  43.     srand(time(NULL));
  44.     for(i = 0; i < n; ++i) {
  45.         a[i] = rand() % 10000;
  46.     }
  47.    
  48.    
  49.     my_sort(a, n);
  50.    
  51.  
  52.     int sorted = 1;
  53.     for(i = 0; i < n - 1; ++i) {
  54.         if(a[i] > a[i + 1]) {
  55.             sorted = 0;
  56.             break;
  57.         }
  58.     }
  59.     if(!sorted) {
  60.         printf("NOT SORTED");
  61.     } else {
  62.         printf("SORTED");
  63.     }
  64.     free(a);
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement