golang實現二分法查找

//二分法查找
func Find(arr []int,val int)int{
	if arr==nil{
		return -1
	}
	left:=0
	right:=len(arr)-1
	pos:=-1
	var mid int
	for left<right{
		mid=(right-left+1)/2+left
		if arr[mid] == val {
			for left<right && arr[mid-1]==val{
				mid--
			}
			pos=mid
			break

		}else if arr[mid] > val{
			right=mid-1
		}else if arr[mid] < val{
			left=mid+1
		}

	}
	return pos
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章