• 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)
    }
    
  • 相关阅读:
    每日一题力扣520 判断大小写
    每日一题力扣434
    每日一题力扣557
    每日一题力扣344 反转字符串
    每日一题力扣125 回文字符串
    每日一题力扣541
    每日一题力扣58
    【20211015】项目成本粗略分析
    【20211013】连岳摘抄
    【20211014】自己就是解决问题的起点
  • 原文地址:https://www.cnblogs.com/pangqianjin/p/14397894.html
Copyright © 2020-2023  润新知