旋转数组的最小数字
2016-10-16 21:39
162 查看
代码:
测试:
#include <iostream> using namespace std; int MinInOrder(int num[], int index1, int index2) { int min_num = num[index1]; while (index1 < index2) { ++index1; if (min_num > num[index1]) min_num = num[index1]; } return min_num; } int Min(int num[], int length) { if (num == nullptr || length <= 0) throw new exception("Invalid Exception"); int index1 = 0; int index2 = length - 1; int indexMid = index1; while (num[index1] >= num[index2]) { if (index2 - index1 == 1) { indexMid = index2; break; } indexMid = (index1 + index2) / 2; if (num[index1] == num[index2] && num[indexMid] == num[index1]) //只能顺序查找 return MinInOrder(num, index1, index2); if (num[indexMid] >= index2) //中间值处在前一个子递增数组中 { index1 = indexMid; } else //中间值处在前一个子递增数组中 { index2 = indexMid; } } return num[indexMid]; } int main() { int num[] = { 3, 4, 5, 1, 2 }; int num2[] = { 1, 0, 1, 1, 1 }; int num3[] = { 1, 1, 1, 0, 1 }; int length = sizeof(num) / sizeof(int); int length2 = sizeof(num2) / sizeof(int); int length3 = sizeof(num3) / sizeof(int); cout<<Min(num, length)<<" "; cout << Min(num2, length2) << " "; cout << Min(num3, length3) << " "; cout << endl; system("pause"); return 0; }
测试:
相关文章推荐
- 旋转数组的最小数字
- 面试题8:旋转数组的最小数字 ***
- 1386:旋转数组的最小数字 @jobdu
- 旋转数组的最小数字
- 剑指 offer set 3 旋转数组的最小数字
- 旋转数组的最小数字
- 【九度OJ1386】|【剑指offer8】旋转数组的最小数字
- 面试题8:旋转数组的最小数字
- [剑指Offer]10.旋转数组的最小数字
- 九度oj 第3题 旋转数组的最小数字 何海涛:《剑指Offer:名企面试官精讲典型编程题》
- 旋转数组的最小数字
- [剑指offer][面试题08]求旋转数组的最小数字
- 面试题8:旋转数组中的最小数字
- 第9天 旋转数组的最小数字
- 题目1386:旋转数组的最小数字
- 旋转数组的最小数字
- 《剑指offer》面试题8—旋转数组的最小数字
- 每日一题(27) - 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字