演算法 兩種方式(遞迴 迴圈)實現二分查詢

2021-07-03 07:29:09 字數 708 閱讀 7471

程式由golang實現,**如下:

1.使用遞迴實現二分查詢

//使用遞迴進行二分查詢

func binarysearchtest()

value := 2

var index int = searchindex(nums, value)

fmt.println("index:", index)

}//在nums中查詢元素value,返回index

func searchindex(nums int, value int) int

//在nums中查詢元素value,返回index. 其中index位於[left,right]之間

func searchindexinarea(nums int, value int, left int, right int) int

mid := left + (right-left)/2

if nums[mid] < value else if nums[mid] > value

return mid

}

2.使用迴圈實現二分查詢

func searchindex2(nums int, value int) int  else if nums[mid] > value  else 

} return -1

}

二分查詢演算法的兩種方式

二分查詢演算法 binary search 二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好,占用系統記憶體較少 缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較...

二分查詢的兩種實現方式

二分查詢是一種常用的演算法,其輸入是乙個有序的元素列表 必須是有序的 如果查詢的元素包含在列表中,二分查詢返回其位置,否則返回false。由於二分查詢每次都是將序列折半,因此時間複雜度為o logn 下面按照非遞迴和遞迴兩種形式利用python進行實現 def er fen li,value sta...

二分查詢演算法的兩種實現方式 非遞迴實現和遞迴實現

二分查詢的條件是對一組有序陣列的查詢,這一點很容易忘記,在使用二分查詢的時候先要對陣列進行排序。先說一下二分查詢的思路 乙個有序陣列,想要查詢乙個數字key的下標,首先算出中間下標mid,利用mid把這個陣列分為兩半,前一半從下標0到mid 1,後一半從mid 1到陣列最後乙個元素 下標是陣列長度減...