演算法 二分法查詢

2021-10-01 23:25:11 字數 1152 閱讀 9576

給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。

如果該題目暴力解決的話需要 o(n) 的時間複雜度,但是如果二分的話則可以降低到 o(logn) 的時間複雜度

遍曆法for迴圈,時間複雜度o(n)

var

searchinsert

=function

(arr, target)

}return arr.length

};

二分法,時間複雜度o(log n)

var

searchinsert

=function

(arr, target)

else

if(arr[mid]

> target)

else

}return beg

}

二分查詢常見錯誤:

不能很好的判斷邊界條件,可能出現錯誤的結果或者出現死迴圈

模板1

function

binary_search_1

(left, right)

else

}// 退出迴圈的時候,視情況,是否需要單獨判斷left(或者right)

return left

}

模板1

function

binary_search_2

(left, right)

else

}// 退出迴圈的時候,視情況,是否需要單獨判斷left(或者right)

return left

}

雖說是兩個模板,區別在於選中位數,中位數根據分支邏輯來選,原則是區間要收縮,且不出現死迴圈,退出迴圈的時候,視情況,有可能需要對最後剩下的數單獨做判斷。

這樣寫的優點是:

分支條數只有 2 條,**執行效率更高,不用在每一輪迴圈中單獨判斷中位數是否符合題目要求,寫分支的邏輯的目的是盡量排除更多的候選元素,而判斷中位數是否符合題目要求我們放在最後進行

查詢演算法 二分法

二分查詢演算法的基本思想 一.首先確定該區間的中間元素位置 mid low high 2 mid代表區間內中間元素的位置 low代表區間內最左邊元素的位置 high代表區間內最右邊元素的位置 二.將待查key元素值與中間元素mid的值 array mid 比較,如果相等,則查詢成功,否則確定新的查詢...

演算法 二分法查詢

1 2 二分法實驗 31 設a 0 n 1 是乙個已排好序的陣列.4請改寫二分搜尋演算法,使得當搜尋元素x不在陣列中時,5返回小於x的最大元素的位置i和大於x的最大元素位置j.6當搜尋元素在陣列中時,i和j相同,均為x在陣列中的位置.72 設有n個不同的整數排好序後存放於t 0 n 1 中,8若存在...

演算法 二分法查詢

免費 二分法查詢主要是為了快速查詢給定陣列內,期待值在陣列中的位置 下標 二分法查詢通過對整個陣列取中間值,判斷期待值所在的範圍並縮小範圍,每次查詢範圍折半,直到範圍的邊界重合,得出期待值的位置,如果找不到返回null 二分法有乙個先決條件是 陣列內元素必須是有序的 給定乙個包含1,3,5,7,8,...