搜尋演算法02 有序列表的二叉搜尋

2021-08-15 14:13:26 字數 608 閱讀 7469

對於有序的列表(假設公升序),我們可以估計目標項的大概位置。根據這一思路,我們能省去一些不必要的過程以達到快速搜尋的目的。

過程:1.找到列表的中間位置並與目的項進行比較。如果相等,則返回改位置

2.若不相等,假設目標項小於當前項,那麼演算法將搜尋中間位置以前的部分,並重複上述操作(反之亦反)

def binarysearch(target, lyst):

"""returns the position of the target item if found,

or -1 otherwise."""

left = 0

right = len(lyst) - 1

while left <= right:

midpoint = (left + right) // 2

if target == lyst[midpoint]:

return midpoint

elif target < lyst[midpoint]:

right = midpoint - 1

else:

left = midpoint + 1

return -1

二叉樹的深度和廣度搜尋演算法

度優先搜尋演算法 depth first search 是搜尋演算法的一種。是沿著樹的深度遍歷樹的節點,盡可能深的搜尋樹的分支。當節點v的所有邊都己被探尋過,搜尋將回溯到發現節點v的那條邊的起始節點。這一過程一直進行到已發現從源節點可達的所有節點為止。如果還存在未被發現的節點,則選擇其中乙個作為源節...

演算法 二叉搜尋樹的後序遍歷序列

description 二叉搜尋樹的後序遍歷序列 問題 題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。思路 1 判斷長度極端情況,為零則直接返回false 2 判斷為節點小於等於頭節點的極端情況 3...

二叉搜尋樹的後序序列

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。1 因為是二叉搜尋樹 所以每個結點的左邊都小於根結點,右邊都大於根結點 2 而二叉搜尋樹的子樹也是二叉搜尋樹,因此也符合1 3 因此,除了最後結點之外的序列前部分...