前提:二分法查詢
# 二分法查詢,又稱對半查詢,是一種較為高效的簡單查詢方法,且要求元素採用順序儲存結構
# 原理:
# 1.查詢指定元素是否在前半部分序列,不在則查詢是否在後半部分序列
# 2.若元素在序列中,則將序列再次分割,重複1
# 3.知道找到滿足條件的記錄,後者子串行不存在,即不包含元素
import random
range = 10
length = 5
dst = 5
flag = 0
list = random.sample(range(range),length) #在指定序列中隨機獲取指定長度片段
list.sort()
print('sorted list:',list)
low = 0
high = length-1
while low<=high:
mid = (low+high)//2
if list[mid] == dst:
flag = 1
break
elif list[mid] > dst:
high = mid - 1
elif list[mid] < dst:
low = mid + 1
if flag:
print('5在第',mid+1,'位')
else:
print("錯誤查詢")
二分法插入排序
# 二分法插入排序是在插入排序的基礎上,使用二分法查詢將元素插入的方法
# 基本原理:(公升序)
# 1.將元素依次放入有序序列中
# 2.取出待排序元素,與有序序列的前半段進行比較
# 3.縮小有序序列範圍,進一步劃分比較,直至範圍內僅有1或2個數字
# 4.將插入值與範圍進行比較
# 3.重複實現公升序
# 實現過程:外層迴圈控制迴圈次數,中層迴圈實現有序排列,內層迴圈實現查詢插入
import random
# 生成序列
range = 10
length = 5
list = random.sample(range(range),length)
print('before sort:',list)
# 元素插入
for i in range(1,length): #從第2個元素開始,插入到前一部分元素中
beg,end = 0,i-1 #定義插入範圍
mid = (beg + end) // 2 #定義二分/中間邊界
while beg < end: #當邊界順序時,進行二分比較
mid = (beg + end) // 2
if mid == beg: #如果中間值與邊界相等,則邊界已確定,結束二分
break
#在確定中間與邊界不相等時,對邊界繼續縮小
if list[i] == list[mid]:
break
elif list[i]二分插入排序的原理較為簡單,但是二分邊界的確定以及範圍比較的實現較為繁瑣
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 ...
二分法 演算法
查詢演算法中的 二分法 是這樣定義的 給定n個從小到大排好序的整數序列list,以及某待查詢整數x,我們的目標是找到x在list中的下標。即若有list i x,則返回i 否則返回 1表示沒有找到。二分法是先找到序列的中點list m 與x進行比較,若相等則返回中點下標 否則,若list m x,則...
演算法 二分法
二分法可以歸為兩大類 二分查詢演算法 二分排序演算法 二分合併演算法 演算法中經常用到二分查詢演算法,比如最常規的應用就是在乙個有序陣列中找特定的數,但是如何寫出乙個完整準確的二分法呢,邊界條件如何判斷,到底是等於還是不等?可能會困惱大家,比如說查詢第乙個等於5的數,那又在如何查詢呢?查詢最後乙個等...