python演算法9 7 二分法插入排序

2021-08-27 11:52:04 字數 1629 閱讀 3733

前提:二分法查詢

# 二分法查詢,又稱對半查詢,是一種較為高效的簡單查詢方法,且要求元素採用順序儲存結構

# 原理:

# 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的數,那又在如何查詢呢?查詢最後乙個等...