[ create a new paste ] login | about

Link: http://codepad.org/8x3GzvMn    [ raw code | output | fork ]

C, pasted on Aug 5:
#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;
}


Output:
1
2
7 -5 1 3 -2 5 2 0 10 1 
7 -5 0 2 5 -2 3 1 10 1 


Create a new paste based on this one


Comments: