The deformation of the ordered array binary lookup, the code is as follows:
#include <stdio.h> #include <stdlib.h>int main () {int *array = (int *) malloc (sizeof (int) *16); int i;for (i = 0; i < 16; i++) {* (array + i) = (i+5)% 16;} int ret = search (array, 0, ten);p rintf ("%d", ret); int isordered (int *array, int begin, int end) {return * (array+end) > * (array+begin)? 1:0;} int contains (int *array, int begin, int end, int thenum) {return thenum >= * (array + begin) && thenum <= * (A Rray + end)? 1:0;} int cyclicorderedbinarysearch (int *array, int begin, int end, int thenum) {if (begin = = end) {if (* (array + begin) = = Thenum ) {return begin;} else {return-1;}} int mid = (begin + End)/2;if (isordered (array, begin, mid)) {if (contains (array, begin, Mid, Thenum)) {return cyclicordere Dbinarysearch (array, begin, Mid, thenum);} else {return Cyclicorderedbinarysearch (array, mid + 1, end, Thenum);}} else {if (contains (array, mid + 1, end, Thenum)) {return Cyclicorderedbinarysearch (array, mid + 1, end, thenum);} else {ret Urn CyclicordeRedbinarysearch (array, begin, Mid, Thenum);}} return-1;} int search (int *array, int n, int thenum) {return Cyclicorderedbinarysearch (array, 0, n-1, thenum);}
[algorithm] Loop ordered array lookup