Go語言實現二分查詢

2021-07-27 09:24:07 字數 1108 閱讀 1581

二分演算法的前提要求傳入的序列是有序的(降序或公升序),並且有乙個目標值。二分演算法主要是首和尾的範圍控制。

具體**實現如下:

package main

import (

"fmt"

)func binary_search(l int, k int) (result bool, mid int, count int) else

if k > l[mid] else

mid = start + (end - start) /2

// 注意: (start + end)/2 overflow!!!, 可以認為start和end是在有限數軸上,如果直接start+end可能會超出這個有限的範圍(溢位!), 所以使用 起始加上兩者之間的距離

fmt.printf("start:%v, end:%v, middle:%v\n", start, end, mid)

}return

}func main()

key :=100

result, index, count := binary_search(l, key)

fmt.printf("search key:%v, result:%v, index:%v, count:%v\n", key, result, index, count)

}

執行結果如下:

start

:50, end

:99, middle

:74start

:75, end

:99, middle

:87start

:88, end

:99, middle

:93start

:94, end

:99, middle

:96start

:97, end

:99, middle

:98start

:99, end

:99, middle

:99search

key:100, result

:true, index

:99, count

:7

go語言實現二分法查詢

二分法查詢原理,自不必多說,網上隨意可找到解釋,還是比較簡單的,重點在於我要練習go語言的使用,所以實現了go語言版本。package main import fmt 迴圈二分法查詢 func binarysearch s int,target int int mid low high 2 if s...

二分查詢C語言實現

二分查詢的簡單實現 include include include define n 20 define n rand 200 int cmp const void a const void b 返回在陣列中位置 int b search int a,int p,int q,int key retu...

C語言實現二分查詢

下面為在陣列a 10 中實現二分查詢的 include includevoid binary search int arr,int right,int k 二分查詢函式 else if mid arr k else if left right printf 找不到!n int main int re...