Golang 查詢 二分法查詢

2022-06-23 02:51:12 字數 1384 閱讀 8295

golang-查詢

介紹:在 golang 中,我們常用的查詢有兩種:

1)順序查詢

2)二分查詢(該陣列是有序)

案例演示:

1)有乙個數列:白眉鷹王、金毛獅王、紫衫龍王、青翼蝠王

猜數遊戲:從鍵盤中任意輸入乙個名稱,判斷數列中是否包含此名稱【順序查詢】**:

2)請對乙個有序陣列進行二分查詢 ,輸入乙個數看看該陣列是否存在此數,並且求出下標,如果沒有就提示"沒有這個數"。【會使用到遞迴】

二分查詢的思路分析:

二分查詢的**實現:

package main 

import "fmt"

//二分查詢的函式

/*二分查詢的思路: 比如我們要查詢的數是 findval

1.arr 是乙個有序陣列,並且是從小到大排序

2.先找到 中間的下標 middle = (leftindex + rightindex) / 2, 然後讓 中間下標的值和 findval 進行比較

2.1如 果 arr[middle] > findval , 就應該向 leftindex (middle - 1)

2.2如 果 arr[middle] < findval , 就應該向 middel+1 rightindex

2.3如果 arr[middle] == findval , 就找到

2.4上面的 2.1 2.2 2.3 的邏輯會遞迴執行

3.想一下,怎麼樣的情況下,就說明找不到[分析出退出遞迴的條件!!]

if leftindex > rightindex

*/func binaryfind(arr *[6]int, leftindex int, rightindex int, findval int)

//先找到 中間的下標

middle := (leftindex + rightindex) / 2

if (*arr)[middle] > findval else if (*arr)[middle] < findval else

}func main()

binaryfind(&arr, 0, len(arr) - 1, -6)

}

二分法查詢

前幾天csdn上說只有10 程式設計師能寫出正確的二分法查詢 so.我在看過二分法查詢方法後寫了乙個 一次測試成功.範圍 需要次數 10 4 100 7 1000 10 10000 14 100000 17 1000000 20 除了對特別小的陣列外,二分法查詢表現是非常優秀的.每次對範圍加倍可以建...

二分法查詢

演算法 當資料量很大適宜採用該方法。採用二分法查詢時,資料需是排好序的。主要思想是 設查詢的陣列區間為data start,end 1 確定該期間的中間位置pos將查詢的值m與data pos 比較。若相等,查詢成功返回此位置 否則確定新的查詢區域,繼續二分查詢。區域確定如下 data pos m ...

二分法查詢

二分法查詢 對有序元素集合的查詢,又叫折半查詢。思路 假設公升序 將查詢元素與集合中間元素比較,相等則返回 若查詢元素小於集合中間元素,則在集合左半部分進行二分查詢 若查詢元素大於集合中間元素,則在集合右半部分進行二分查詢 首先判斷要查詢的範圍正確性,如果查詢開始位置大於結束位置則返回未找到 sf....