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)
    }
    
  • 相关阅读:
    驱动中回溯函数的调用关系
    CSI-MIPI学习笔记
    1920*1080分辨率和1080p,1080i的关系
    V4L2驱动内核文档翻译(一)
    signal()信号操作
    617. Merge Two Binary Trees
    Java中的集合
    Switch能否用string做参数
    Java面试题
    八种基本数据类型的大小,以及他们的封装类
  • 原文地址:https://www.cnblogs.com/pangqianjin/p/14397894.html
Copyright © 2011-2022 走看看