#!/usr/bin/env python
#coding -*- utf:8 -*-
#二分查詢
#時間複雜度o(logn)
#乙個時間常量o(1)將問題的規模縮小一半,則o(logn)
import
random
defbinary_search(arraya, x, n):
low =0
high = n-1notfound = -1
while low<=high:
#這裡是//2,寫乙個/會出錯,因為python3中3/2=1.5,3//2=1
middle = (low+high)//2
if(arraya[middle] low = middle + 1
#注意這裡是elif,一開始我寫成了if會出錯
elif(arraya[middle] >x):
high = middle - 1
else
:
return
middle
return
notfound
if__name__=='
__main__':
n = int(input("
所要生成陣列的長度:"))
a =for i in
range(n):
x = random.choice(range(100))
#這裡排序就用內建的吧!
#列表可以被修改
a.sort()
print("
生成的陣列(從小到大):
",a)
b = int(input("
想要查詢的x值為:"))
if(binary_search(a, b, n)==-1):
print("
所要查詢的x不在該陣列裡!")
else
:
print("
x的下標為
", binary_search(a, b, n))
二分查詢演算法(Python版)
本文出自天外歸雲的 記性不好 所以平時根本用不到的東西就算學過如果讓我去想也會需要很多時間 在乙個有序陣列中查詢元素最快的演算法,也就是折半查詢法,先找乙個陣列中間位置 binary index 的元素和目標元素 num 進行比較,如果binary index位元素小於目標元素就在binary in...
Python演算法 二分查詢
二分查詢 binary search 也被稱為折半查詢,是在乙個有序陣列中查詢特定元素位置的查詢演算法。二分查詢要求查詢序列必須採用順序儲存,且表中元素按關鍵字有序排列。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成...
Python 二分查詢演算法
二分前提是有序,否則不可以二分 二分查詢演算法的是時間複雜度o log n 函式可以分2類 bisect系,用於查詢index insort系,用於實際插入 預設重複時從右邊插入import bisect lst 37 88,20 50,30 65,41 50 newlst sorted lst 公...