Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Напредно сортирање Problem 4 (1 / 2)
- Да се напише функција за ефикасно сортирање на низа. Низата може да има 100000 елементи.*/
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- int partition( int *a, int l, int r) {
- int pivot, i, j, t;
- pivot = a[l];
- i = l;
- j = r+1;
- while( 1) {
- do ++i;
- while( a[i] <= pivot&&i <= r );
- do --j;
- while( a[j] > pivot );
- if( i >= j ) break;
- t = a[i];
- a[i] = a[j];
- a[j] = t;
- }
- t = a[l];
- a[l] = a[j];
- a[j] = t;
- return j;
- }
- void my_sort(int *a, int l,int r) {
- int j;
- if( l < r ) {
- // divide and conquer
- j = partition( a, l, r);
- my_sort( a, l, j-1);
- my_sort( a, j+1, r);
- }
- }
- // не ја менувајте главната функција
- int main() {
- int n, i;
- scanf("%d", &n);
- int *a = malloc(sizeof(int) * n);
- srand(time(NULL));
- for(i = 0; i < n; ++i) {
- a[i] = rand() % 10000;
- }
- my_sort(a, 0, n);
- int sorted = 1;
- for(i = 0; i < n - 1; ++i) {
- if(a[i] > a[i + 1]) {
- sorted = 0;
- break;
- }
- }
- if(!sorted) {
- printf("NOT SORTED");
- } else {
- printf("SORTED");
- }
- free(a);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement