02分治演算法 01二分查詢

2021-07-26 07:45:52 字數 466 閱讀 1295

分治演算法的思想就是分而治之,通過將原問題分解為與原問題相似的小問題,小問題再分解為規模更小的問題..最終變成乙個個簡單易解的問題。

二分查詢就是一種簡單的分治演算法。

問題:給定乙個排序的整數陣列(公升序)和乙個要查詢的整數target

,用o(logn)

的時間查詢到target第一次出現的下標(從0開始),如果target不存在於陣列中,返回-1

。@test

public void test(); //含有重複的元素

int target = 3;

int left = 0;

int right = nums.length-1;

int res = -1;

while(left<=right)

system.out.println(res);}

這裡通過不斷減少查詢區域的範圍,把大問題分解成結構相似的小問題,直到問題得解。

演算法02 分治

分治,就是 分而治之 就是把乙個複雜的問題分成兩個或更多的相同或相似的子問題,直到最後子問題可以簡單的直接求解,原問題的解即子問題的解的合併。分治法常常跟遞迴一起使用,借助遞迴,我們可以方便地將問題分解再將結果合併。分解 將原問題分解為若干個規模較小,相互獨立,與原問題形式相同的子問題 遞迴 若子問...

演算法(二) 分治法

分治法的適 條件 該問題的規模縮 到 定程度就可以容易地解決。該問題可以分解為若 個規模較 的相同問題 遞迴思想的應 該問題所分解出的各個 問題是相互獨 的,即 問題之間不包含公共的 問題。利 該問題分解出的 問題的解可以合併為該問題的解。案例 快排 1 過程 divide partition 對元...

演算法(二) 分治法

分治法的適 條件 該問題的規模縮 到 定程度就可以容易地解決。該問題可以分解為若 個規模較 的相同問題 遞迴思想的應 該問題所分解出的各個 問題是相互獨 的,即 問題之間不包含公共的 問題。利 該問題分解出的 問題的解可以合併為該問題的解。案例 快排 1 過程 divide partition 對元...