标签:
给出一个有序数组,假设其为升序,随机找到一个点,将这个点后面的序列移到数组前面,构成一个新的序列。
要求对这个新的数组进行查找,找不到返回-1,否则返回其在数组中的位置。
比如输入数组[7,8,9,1,2,3,4,5,6]
查找1,返回3;
查找8,返回1;
查找0,返回-1;
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); } }
标签:
原文地址:http://www.cnblogs.com/sparkles/p/4563809.html