循环递增数组中查找是否存在某个数
2015-03-03 11:39
197 查看
#include <cassert> #include <iostream> using namespace std; // 在循环递增数组中查看是否存在某个数 // 返回-1表示数组中没有该元素 int search(int arr[], int len, int value) { if(arr == NULL || len <= 0) { return -1; } int start = 0; int end = len - 1; while(start <= end) { int mid = start + (end - start >> 1); if(value == arr[mid]) { return mid; } else if(value < arr[mid]) // 值小于中间元素 { if(arr[mid] >= arr[start]) // 中间元素在左数组 { if(value < arr[start]) // 在右数组查找 { start = mid + 1; } else // 在左数组查找 { end = mid - 1; } } else // 中间元素在右数组 { end = mid - 1; } } else // 值大于中间元素 { if(arr[mid] >= arr[start]) // 中间元素在左数组 { start = mid + 1; } else // 中间元素在右数组 { if(value < arr[start]) // 在右数组查找 { start = mid + 1; } else // 在左数组查找 { end = mid - 1; } } } } return -1; } int main(int argc, char* argv[]) { int arr1[] = {17, 19, 20, 25, 1, 4, 7, 9}; int len = sizeof(arr1) / sizeof(int); for(int i = 0; i < len; ++i) { cout << search(arr1, len, arr1[i]) << endl; } cout << search(NULL, 1, 0) << endl; cout << search(arr1, 0, 7) << endl; cout << search(arr1, len, 10) << endl; cout << search(arr1, len, 0) << endl; cout << search(arr1, len, 26) << endl; return 0; }
运行结果:
0
1
2
3
4
5
6
7
-1
-1
-1
-1
-1
相关文章推荐
- 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);
- 2. 有一个二维数组.----杨氏矩阵 。数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);
- 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N)
- 杨氏矩阵:有一个二维数组,数组的每行从左到右都是递增的,每列从上到下都是递增的,从这样的数组中查找一个数字是否存在
- //杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。
- //杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);
- 杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。
- 在一个循环有序数组里查找一个给定的值是否存在
- 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);
- 有一个二维数组杨氏矩阵,数组的每行从左到右是递增的,每列从上到下是递增的,在这样的数组中查找一个数字是否存在
- 有一个二维数组.----杨氏矩阵 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);
- 关于查找数组中是否存在重复元素的方法总结(Find A Duplicate)
- 查找指定字符串在数组中是否存在
- 判断一个数是否存在一个数组中,二分查找
- 循环递增的数组 二分查找
- C++用algorthm算法查找数组中是否存在的值
- 笔试之循环递增数组查找
- 用array_search 数组中查找是否存在这个 值
- 查找是否在数组中存在一个既定的值。
- 查找一个数是否存在于一个数组中。该数组分两段有序,第一段的数都大于第二段的数。