#include <stdio.h>
int _between(int* fe, int* le) {
int* p, *ta, *tb, tmp;
p = ta = tb = fe;
while(p != le) {
if(*p < *ta)
ta = p;
else if(*p > *tb)
tb = p;
++p;
}
if(*ta == *tb)
return 0;
p = (ta < tb) ? ta : tb;
tb = (ta > tb) ? ta : tb;
ta = p;
for(++ta, --tb; ta < tb; ++ta, --tb) {
tmp = *ta;
*ta = *tb;
*tb = tmp;
}
return 1;
}
int main(void)
{
int arr[] = { 7, -5, 1, 3, -2, 5, 2, 0, 10, 1 };
int i, size = sizeof(arr)/sizeof(arr[0]);
// исходный массив
for(i = 0; i < size; i++)
printf("%d ", arr[i]);
putchar('\n');
if(! _between(arr, arr + size))
puts("bad cmp !");
else {
// обработанный массив
for(i = 0; i < size; i++)
printf("%d ", arr[i]);
putchar('\n');
}
return 0;
}