在旋转之后的已排序数组中查找一个数字

来源:互联网 发布:南风知我意番外 编辑:程序博客网 时间:2024/05/21 08:03


#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int search(int arr[], int len, int k){int left = 0;int right = len - 1;while(left <= right){int mid = left + ((right - left)>>1);if(arr[mid] == k){return mid;}if(arr[left] <= arr[mid])//左端有序{if(arr[left]<=k && k<arr[mid])//k在有序端{right = mid - 1;}else//k在无序端{left = mid + 1;}}else//右端有序{if(k>arr[mid] && k<=arr[right])//k在有序端{left = mid + 1;}else//k在无序端{right = mid - 1;}}}return -1;}int main(){int arr1[] = {2, 3, 4, 5, 6, 7, 8, 9, 0, 1};int arr2[] = {8, 9, 0, 1, 2, 3, 4, 5, 6, 7};int len = sizeof(arr1)/sizeof(arr1[0]);int tmp1 = search(arr1, len, 1);int tmp2 = search(arr2, len, 7);printf("%d\n", tmp1);printf("%d\n", tmp2);return 0;}



阅读全文
0 1
原创粉丝点击