zoukankan      html  css  js  c++  java
  • Golang二分查找

    风格1:

    package main
    
    
    import (
    	"fmt"
    )
    
    func BinarySort(arr *[]int, leftIndex, rightIndex, findVal int){
    	// 判断leftIndex是否大于rightIndex
    	if leftIndex > rightIndex{
    		fmt.Println("找不到")
    		return
    	}
    	// 先找到中间的下标
    	middle := (leftIndex+rightIndex)/2
    	
    	if (*arr)[middle] > findVal{
    		// 说明我们要找的数,应该在leftIndex---middle-1
    		BinarySort(arr, leftIndex, middle-1, findVal)
    	}else if (*arr)[middle] < findVal{
    		// 说明我们要找的数,应该在middle+1---rightIndex
    		BinarySort(arr, middle+1, rightIndex, findVal)
    	}else{
    		// 找到了
    		fmt.Printf("找到了,下标为%v
    ", middle)
    	}
    }
    
    func main(){
    	slice := []int{24, 69, 80, 57, 13}
    	BinarySort(&slice, 0, len(slice)-1, 80)
    
    }
    

    风格2:使用switch

    package main
    
    import (
    	"fmt"
    )
    
    func BinarySort(arr *[]int, leftIndex, rightIndex, findVal int){
    	// 判断leftIndex是否大于rightIndex
    	if leftIndex > rightIndex{
    		fmt.Println("找不到")
    		return
    	}
    
    	// 先找到中间的下标
    	switch middle := (leftIndex+rightIndex)/2; {
    
    		case (*arr)[middle] > findVal:
    			// 说明我们要找的数,应该在leftIndex---middle-1
    			BinarySort(arr, leftIndex, middle-1, findVal)
    		case (*arr)[middle] < findVal:
    			// 说明我们要找的数,应该在middle+1---rightIndex
    			BinarySort(arr, middle+1, rightIndex, findVal)
    		default:
    			// 找到了
    			fmt.Printf("找到了,下标为%v
    ", middle)
    	}
    }
    
    func main(){
    	slice := []int{24, 69, 80, 57, 13}
    	BinarySort(&slice, 0, len(slice)-1, 80)
    }
    
  • 相关阅读:
    最大流最小割——bzoj1001狼抓兔子,洛谷P2598
    求最小公因数和最大公倍数
    归并排序
    Splay
    Tarjan判断为什么不能把dfn写成low
    2-SAT问题
    离散数学-传递闭包(POJ3275)
    POJ3190
    安装环境gcc;
    二分折半排序
  • 原文地址:https://www.cnblogs.com/pangqianjin/p/14397894.html
Copyright © 2011-2022 走看看