1 递归实现
二分查找递归实现,关键是要确定终止条件
package search
//递归实现
func BinarySearch(arr []int,dst int) int{
mid := len(arr)/2
//递归最重要的是确定终止条件
if len(arr) == 0{
return -1
}
//查找成功
if arr[mid]== dst{
return mid
}else if dst < arr[mid]{
arr = arr[:mid - 1]
}else {
arr = arr[mid+1:]
}
//继续递归
return BinarySearch(arr,dst)
}
2 非递归实现
//非递归实现
func BinarySearchEx(arr []int,dst int) int{
for len(arr)!=0{
mid := len(arr)/2
if dst == arr[mid]{
return mid
}else if dst < arr[mid]{
arr = arr[:mid-1]
}else{
arr = arr[mid+1:]
}
}
return -1
}
可以看到代码比用C/C++写简洁很多
本文介绍了二分查找算法的两种实现方式:递归与非递归。通过Go语言代码展示了每种实现的具体步骤,并比较了它们之间的差异。
859





