zoukankan      html  css  js  c++  java
  • 排序和查找2

    在Golang中,我们常用的查找有两种:

    1)顺序查找

    2)二分查找

    顺序查找:

    1)有一个数列:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王

    猜数游戏:从键盘中任意输入一个名称,判断数列中是否包含此名称

    案例演示:
    func main() {

      //思路
      //1.定义一个字符串数组
      //2.从控制台接收一个名称,依次比较,发现有就提示相应信息

      names := [4]string {"白眉鹰王","金毛狮王","紫衫龙王","青翼蝠王"}
      var heroName = ""
      fmt.Println("请输入要查找的人名...")
      fmt.Scanln(&heroName)

      //顺序查找:第一种方式
      // for i := 0; i < len(names); i++ {
        // if heroName == names[i] {
          // fmt.Printf("找到%v ,下标%v ", heroName, i)
          // break
        // } else if i == len(names) -1 {
          // fmt.Printf("没找到%v ", heroName)
        // }
      // }

      //循序查找:第2种方式(推荐使用)
      index := -1

      for i := 0; i < len(names); i++ {
        if heroName == names[i] {
          index = i //将找到的值对应的下标赋给 index
          break
        }
      }
      if index != -1 {
        fmt.Printf("找到%v ,下标%v ", heroName, index)
      } else {
        fmt.Println("没找到", heroName)
      }
    }

    二分查找:

    请对一个有序数组进行二分查找 {1,8,10,89,1000,1234},输入一个数,看看该数组是否存在此数,并且求出下标,如果没有就提示"没有这个数" 【会使用到递归】

    二分查找的代码实现:

    func BinaryFind(arr *[6]int, leftIndex int, rightIndex int, findVal int) {

      //判断leftIndex是否大于rightIndex
      if leftIndex > rightIndex {
        fmt.Println("找不到")
        return
      }

      //先找到中间的下标
      middle := (leftIndex + rightIndex) / 2

      if (*arr)[middle] > findVal {
      //说明我们要查找的数,应该在 leftIndex --- middle-1
        BinaryFind(arr, leftIndex, middle - 1, findVal)
      } else if (*arr)[middle] < findVal {
        //说明我们要查找的数,应该在 middle+1 --- rightIndex
        BinaryFind(arr, middle + 1, rightIndex, findVal)
      } else {
        fmt.Printf("找到了,下标为%v ", middle)
      }

    }

    func main() {

      arr := [6]int{1, 8, 10, 89, 1000, 1234}

      //测试一把
      BinaryFind(&arr, 0, len(arr) - 1, 1111)
    }

  • 相关阅读:
    Querying for Event Information
    通过注册表查询 .Net Framework 的版本
    [Batch脚本] if else 的格式
    逆天技能
    财运是靠自己争取的,而财商是可以通过后天学习提高的
    必须冒着可能付出惨痛代价的风险前进,否则你就只能永远做个井底之蛙
    财商低的六种表现
    中国大唐集团公司 主要经营范围
    中国大唐集团公司是2002年12月29日在原国家电力公司部分企事业单位基础上组建而成的特大型发电企业集团
    中国大唐集团公司在役及在建资产分布在全国31个省区市以及境外
  • 原文地址:https://www.cnblogs.com/green-frog-2019/p/11402985.html
Copyright © 2011-2022 走看看