[C++学习]剑指offer8题学习笔记

来源:互联网 发布:模具编程软件 编辑:程序博客网 时间:2024/06/07 03:41

题目要求:输出旋转数组的最小数字

解答:(没有考虑特殊情况的粗略答案)

#include <iostream>using namespace std;void PrintMinNumber(int* arr, int length) {int i = 0;for (;i < length; i++) {if (arr[i] < arr[0]) {cout << arr[i] << endl;break;}}if (i == length)cout << arr[0] << endl;}void PrintMinNumber_Way2(int* arr, int length) {int index1 = 0;int index2 = length - 1;int index_mid = index1;while (arr[index1]>=arr[index2]) {if (index2 - index1 == 1){index_mid = index2;break;}index_mid = (index1 + index2) / 2;if (arr[index_mid] >= arr[index1])index1 = index_mid;elseindex2 = index_mid;}cout << arr[index_mid] << endl;}int main() {int arr[] = { 5,6,1,2,3,4 };PrintMinNumber_Way2(arr, 6);while (1);return 0;}


1 0
原创粉丝点击