python 二分法查詢例項(遞迴 迴圈)

2022-05-14 02:27:06 字數 1620 閱讀 9399

二分法,主要應用於有序序列中,原理是每次查詢都將原序列折半,逐漸縮小查詢範圍的一種演算法。

要求在乙個有序序列中,例如[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99],查詢乙個數字,如果找到則列印該數字,如果找不到,則輸出「not found!」

遞迴,是在函式中自身呼叫自身的一種情況,直到有乙個明確的退出條件成立後結束相互呼叫。遞迴是一種很容易理解某類問題的方式,但是不是特別高效,因為每次呼叫自身時,都會在記憶體中建立乙個新的記憶體空間,當不斷迴圈呼叫非常多次時,是非常耗記憶體的。

#

!/usr/bin/env python

#-*- coding: utf-8 -*-

defrecursion_search(data_source, find_n):

mid = len(data_source) / 2

if len(data_source) >= 1:

if find_n >data_source[mid]:

recursion_search(data_source[mid + 1:], find_n)

elif find_n

recursion_search(data_source[:mid], find_n)

else

:

print

data_source[mid]

else

:

print

"not found !"if

__name__ == '

__main__':

test_array = range(0, 100, 3)

recursion_search(test_array, 99)

#

!/usr/bin/env python

#-*- coding: utf-8 -*-

defloop_search(data_source, find_n):

while

len(data_source):

mid = len(data_source) / 2

if find_n

data_source =data_source[:mid]

elif find_n >data_source[mid]:

data_source = data_source[mid + 1:]

else

:

print

data_source[mid]

break

else

:

print

"not found !"if

__name__ == '

__main__':

test_array = range(0, 100, 3)

loop_search(test_array, 99)

***

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

遞迴二分法查詢

二分法使用了折半查詢的思想,不斷的變化,陣列下標的起始位置 begin 和終止位置 end 來進行搜尋。我們使用兩種演算法,解決二分查詢 public class solution system.out.println solution.sort number,0,number.length,56 ...