golang-查詢
介紹:在 golang 中,我們常用的查詢有兩種:
1)順序查詢
2)二分查詢(該陣列是有序)
案例演示:
1)有乙個數列:白眉鷹王、金毛獅王、紫衫龍王、青翼蝠王
猜數遊戲:從鍵盤中任意輸入乙個名稱,判斷數列中是否包含此名稱【順序查詢】**:
2)請對乙個有序陣列進行二分查詢 ,輸入乙個數看看該陣列是否存在此數,並且求出下標,如果沒有就提示"沒有這個數"。【會使用到遞迴】
二分查詢的思路分析:
二分查詢的**實現:
package mainimport "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....