• 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-cli-service: command not found
    parted 大容量硬盘分区 格式化
    RAC集群安装错误集合
    印象笔记 Windows 客户端“未响应”怎么办?
    split,splice,slice 三者的用法
    JQuery 2.0.3 源码结构
    数据库字段备注信息声明语法 CDL (Comment Declaration Language)
    mysql底层原理解析(一)之日志
    ES底层原理解析
    aspnetCore 3.1网站部署到IIS
  • 原文地址:https://www.cnblogs.com/pangqianjin/p/14397894.html
Copyright © 2020-2023  润新知