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)
    }
    
  • 相关阅读:
    vue之v-on
    垂直居中下
    垂直居中上
    vue之v-for
    vue之v-if和v-show
    vue之v-model
    vue之v-bind
    数学---目录
    【数学】证明题
    【计算机网络】应用层
  • 原文地址:https://www.cnblogs.com/pangqianjin/p/14397894.html
Copyright © 2011-2022 走看看