#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N_MAX 20
int (*cmp)(int a, int b);
int less(int a, int b) {
return (a < b);
}
int greaterequal(int a, int b) {
return (a >= b);
}
int main(void) {
int a[N_MAX];
int b[N_MAX];
int tmp;
int i, j;
int d;
int n;
int s;
srand(time(NULL));
for(i = 0; i < N_MAX; i++)
a[i] = b[i] = rand() % 30;
for(i = 0; i < N_MAX; i++)
printf("%i ", a[i]);
for(i = 0; i < N_MAX; i++) {
for(j = i + 1; j < N_MAX; j++) {
if(a[j] < a[i]) {
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
printf("\n\n");
for(i = 0; i < N_MAX; i++)
printf("%i ", a[i]);
printf("\n\n");
for(i = 0; i < N_MAX; i++)
a[i] = b[i];
for(i = 0; i < N_MAX; i++)
printf("%i ", a[i]);
for(i = N_MAX - 1; i > 0; i--) {
for(j = i - 1; j >= 0; j--) {
if(a[i] < a[j]) {
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
printf("\n\n");
for(i = 0; i < N_MAX; i++)
printf("%i ", a[i]);
printf("\n\n");
for(i = 0; i < N_MAX; i++)
a[i] = b[i];
for(i = 0; i < N_MAX; i++)
printf("%i ", a[i]);
printf("\n\n");
for(i = 0; i < N_MAX; i++) {
for(j = i + 1; j < N_MAX; j++) {
if(a[i] < a[j]) {
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
for(i = 0; i < N_MAX; i++)
printf("%i ", a[i]);
printf("\n\n");
for(i = 0; i < N_MAX; i++)
a[i] = b[i];
for(i = 0; i < N_MAX; i++)
printf("%i ", a[i]);
for(i = N_MAX - 1; i > 0; i--) {
for(j = i - 1; j >= 0; j--) {
if(a[i] > a[j]) {
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
printf("\n\n");
for(i = 0; i < N_MAX; i++)
printf("%i ", a[i]);
printf("\n\n");
for(i = 0; i < N_MAX; i++)
a[i] = b[i];
for(i = 0; i < N_MAX; i++)
printf("%i ", a[i]);
d = 1;
if(i < 0) {
s = N_MAX;
n = 0;
cmp = greaterequal;
}
else {
s = 0;
n = N_MAX;
cmp = less;
}
for (i = s; cmp(i,n); i += d) {
for(j = i; cmp(j, n); j += d) {
if(cmp(a[i], a[j])) {
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
printf("\n\n");
for(i = 0; i < N_MAX; i++)
printf("%i ", a[i]);
printf("\n\n");
for(i = 0; i < N_MAX; i++)
a[i] = b[i];
for(i = 0; i < N_MAX; i++)
printf("%i ", a[i]);
d = -1;
if(d < 0) {
s = N_MAX;
n = 0;
cmp = greaterequal;
}
else {
s = 0;
n = N_MAX-1;
cmp = less;
}
for (i = s; cmp(i,n); i += d) {
for(j = i; cmp(j, n); j += d) {
if(cmp(a[i], a[j])) {
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
printf("\n\n");
for(i = 0; i < N_MAX; i++)
printf("%i ", a[i]);
printf("\n\n");
for(i = 0; i < N_MAX; i++)
a[i] = b[i];
for(i = 0; i < N_MAX; i++)
printf("%i ", a[i]);
for(d = 4; d > 1; d--) {
printf("\n");
if(d < 0) {
s = N_MAX;
n = 0;
cmp = greaterequal;
}
else {
s = 0;
n = N_MAX-1;
cmp = less;
}
for (i = s; cmp(i,n); i += d) {
for(j = i; cmp(j, n); j += d) {
if(cmp(a[i], a[j])) {
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
printf("\n\n");
for(i = 0; i < N_MAX; i++)
printf("%i ", a[i]);
}
printf("\n\n");
return 0;
}