二分法,主要應用於有序序列中,原理是每次查詢都將原序列折半,逐漸縮小查詢範圍的一種演算法。要求在乙個有序序列中,例如[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
:
data_source[mid]
else
:
"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
:
data_source[mid]
break
else
:
"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 ...