二分法: low 与 mid 比较: 两种情况:1、low > mid :此情况low不必再讨论,但是很可能low +1部分 是最小的。所以low +=1 2、low >=mid : 此情况low部分很可能是最小的,但是由于出现旋转,所以high很可能小于low, 此时出现两种情况: 1、low >high 则我们直接从右半部分考虑,直接low = mid +1 2、low <high 那么我们考虑左半部分,因为很可能左半部分也有小于low的情况。 # -*- coding:utf-8 -*- class Solution: def minNumberInRotateArray(self, rotateArray): if rotateArray == None&nbs***bsp;len(rotateArray) == 0: return None low = 0 high = len(rotateArray) -1 while low < high: mid = (low + high) >> 1 if rotateArray[mid] > rotateArray[low]: if rotateArray[high] < rotateArray[low]: low = mid +1 else: high -=1 elif rotateArray[mid] < rotateArray[high]: high = mid else: low +=1 return rotateArray[low]