二分法查找

package main
import (    
	"fmt"
)

func binarySearch(s []int, number int) int {

    if len(s) <= 2 {
        if s[0] == number {
            return 0        
        } else if s[1] == number {
                  return 1       
        } else {
                   return -1        
        }    
     }
       
    low := 0    
    hight := len(s) - 1
    
    for {
    
        if low > hight {
               return -2
        }
        
        mid := (low + hight) / 2
        
        if s[mid] > number {
        
            hight = mid - 1
        } else if s[mid] < number {
        
            low = mid + 1
        } else if s[mid] == number {
        
            return mid
        } else {
        
            return -3
        }
    }
}

func main() {

    var s = []int{8, 3, 5, 2, 7, 1, 6, 0, 10, 9, 4}
        
   fmt.Printf("len() %d\n", len((s)))    
   index := binarySearch(s, 9)    
   fmt.Printf("===>%d\n", index)
   
    if index >= 0 {        
    
    	fmt.Printf("BinarySearch 6 =? %d\n", s[index])    
    } else {
            
    		fmt.Printf("没找到 !\n")
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值