[LeetCode] 74 Search a 2D Matrix(二分查找)

二分查找每次排除掉一半不合适的值,所以对于n个元素的情况来说:

一次二分剩下:n/2

两次:n/4

m次:n/(2^m)

最坏情况是排除到最后一个值之后得到结果,所以:
n/(2^m) = 1

2^m = n

所以时间复杂度为:log2(n)

 

2.二分查找的实现方法:

(1)递归

int RecursiveBinSearch(int arr[], int bottom, int top, int key) { if (bottom <= top) { int mid = (bottom + top) / 2; if (arr[mid] == key) { return mid; } else if (key < arr[mid]) { return RecursiveBinSearch(arr, bottom, mid - 1, key); } else { return RecursiveBinSearch(arr, mid + 1, top, key); } } else { return -1; } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwzgfj.html