二分法,以優(yōu)秀的復(fù)雜()度成功的將順序查找拋在后面,成為我們最常用的算法。
在我們平常的認(rèn)知里,二分法只能用于解決有序的數(shù)據(jù)問題,但對(duì)于求解內(nèi)容的不同,它也可以用于無數(shù)的數(shù)據(jù)中,下面就有序數(shù)據(jù)和無序數(shù)據(jù)的相關(guān)問題進(jìn)行總結(jié)。
1. 二分法解決有序問題
1.1 查找某個(gè)數(shù)
1.2 大于等于某數(shù)最左側(cè)的位置
2. 二分法解決無序問題
2.1 局部最小值問題
首先來解釋一下什么是局部最小值:
- 如果這個(gè)數(shù)在0位置:這個(gè)數(shù)小于1位置上的數(shù);
- 如果這個(gè)數(shù)在N位置:這個(gè)數(shù)小于N-1位置上的數(shù);
- 如果這個(gè)數(shù)在其他位置:這個(gè)數(shù)小于前一個(gè)位置上的數(shù),還小于后一位位置上的數(shù)。
如果在一個(gè)無序數(shù)組中,相鄰兩數(shù)不相等,則從0 ~ (N-1)上存在局部最小值