給出一個有序數組,假設其爲升序,隨機找到一個點,將這個點後面的序列移到數組前面,構成一個新的序列。數組
要求對這個新的數組進行查找,找不到返回-1,不然返回其在數組中的位置。blog
好比輸入數組[7,8,9,1,2,3,4,5,6]class
查找1,返回3;di
查找8,返回1;return
查找0,返回-1;search
int searchDisorderedArray(int a[], int key, int begin, int end) { if(begin == end && a[begin] != key) return -1; int mid = (begin+end)/2; if(a[mid] == key) return mid; if(a[mid] > a[end]) { if(key >= a[begin] && key <=a[mid]) return searchDisorderedArray(a, key, begin, mid-1); else return searchDisorderedArray(a, key, mid+1, end); } else { if(key >= a[mid] && key <=a[end]) return searchDisorderedArray(a, key, mid+1, end); else return searchDisorderedArray(a, key, begin, mid-1); } }