#include #include #define PRVKU 17 //int pole[] = {3, 5, 6, 8, 9, 9, 9, 15, 18, 1, 2, 2, 7, 9, 10, 13, 20}; int pole[] = {10, 1, 20, 3, 3, 3, 5, 7, 12, 26, 18, 9, 23, 15, 1, 2, 18}; void merge(int l, int c, int r) { int buf, i; while (l < c && c <= r) { if (pole[l] <= pole[c]) { l++; } else { buf = pole[c]; for (i = c - 1; i >= l; i--) pole[i + 1] = pole[i]; pole[l] = buf; l++; c++; } } } void mergesort(int l, int r) { if (l == r) ; else if (r - l == 1) { if (pole[l] > pole[r]) { int buf; buf = pole[l]; pole[l] = pole[r]; pole[r] = buf; } } else { int c; c = (l+r)/2+1; mergesort(l, c-1); mergesort(c, r); merge(l, c, r); } } int main() { int i; //merge(0, 9, 16); mergesort(0, PRVKU - 1); for (i = 0; i < PRVKU; i++) printf("%d, ", pole[i]); return 0; }