在Golang中,常用的查找有两种:顺序查找、二分查找。

1. 顺序查找

举个栗子
有一个数列:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王
猜数游戏:从键盘中任意输入一个名称,判断数列中是否包含此名称【顺序查找】
代码

package main
import "fmt"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\n",heroName,i)break}else if i == (len(names)-1){fmt.Printf("没有找到%v\n",heroName)}}// 顺序查找:第二种方式(推荐)index := -1for i := 0; i < len(names); i++{if heroName == names[i]{index = ibreak}}if index == -1{fmt.Printf("没找到%v\n",heroName)}else{fmt.Printf("找到%v,下标%v\n",heroName,index)}
}

2. 二分查找(该数组是有序的)

举个栗子
请对一个有序数组进行二分查找{1,8,10,89,1000,1234},输入一个数看看该数组是否存在此数,并且求出下标,如果没有就提示"没有这个数"。【会使用到递归】
二分查找的思路分析
arr = [1,8,10,89,1000,1234] 8
二分查找的思路:比如要查找的数是key
1).arr是一个有序数组,并且是从小到大排序
2).先找到中间的下标mid=(leftl+right)/2,然后让中间下标的值和key进行比较
(1)如果arr[mid] >key,就应该向left ----(mid-1)
(2)如果arr[mid]<key,就应该向mid+1---- right
(3)如果arr[mid] == key,就找到
(4)上面的1).2).3)的逻辑会递归执行
3)分析退出递归的条件
if left > right{
return…
}
二分查找的代码实现

package main
import "fmt"//二分查找的函数
/*
arr = [1,8,10,89,1000,1234] 8
二分查找的思路:比如要查找的数是key
1.arr是一个有序数组,并且是从小到大排序
2.先找到中间的下标mid=(leftl+right)/2,然后让中间下标的值和key进行比较
1)如果arr[mid] >key,就应该向left ----(mid-1)
2)如果arr[mid]<key,就应该向mid+1---- right
3)如果arr[mid] == key,就找到
4) 上面的1).2).3)的逻辑会递归执行
3.分析退出递归的条件
if left > right{return..
}
*/func BinaryFind(arr *[6]int, left int, right int, key int){// 判断是否left>rightif left > right{fmt.Println("没找到")return}// 先找到 中间的下标mid := (left + right) / 2if key > (*arr)[mid]{// 说明要查找的数在mid+1 --- rightBinaryFind(arr, mid+1, right, key)}else if key < (*arr)[mid]{// 说明要查找的数在left --- mid-1BinaryFind(arr, left, mid-1, key)}else{// 找到了fmt.Printf("找到了,下标为%v\n",mid)}
}func main(){arr := [6]int{1,8,10,89,1000,1234}// 测试一下BinaryFind(&arr, 0, len(arr)-1, 8)
}

【Golang】查找-学习笔记相关推荐

  1. LearnGoProgramming-YouTube:Golang基础学习笔记

    Golang学习笔记 本文是从YouTube观看视频资料Golang初学者教程时顺手做的笔记,仅供辅助学习和回顾使用.由于水平有限,可能会存在一定的翻译错误和内容错误. YouTube资料来源: 文章 ...

  2. IDEA 配置Go环境,编写Golang代码,学习笔记(一)

    Hello,各位小伙伴们,又有一段时间没有更新了,老哥呢,最近去外面面试,发现Java已经是卷得不能在卷了,老哥没有办法,只能另辟蹊径,去卷Go,现在可以说又回到原点了. 诶,世事无常,大肠包小肠. ...

  3. Golang库学习笔记 Gin(三)

    快速入门 今天,我们将要基于一个例子,学习如何使用GIN框架. 目录 文章目录 快速入门 目录 要求 安装 1.下载并安装 gin: 2.将 gin 引入到代码中: 3.(可选)如果使用诸如 http ...

  4. Golang库学习笔记 Gin(一)

    GIN GIN 是Go语言的一个比较成熟的HTTP web 框架,运行速度很快. 目录 文章目录 GIN 目录 正文 如何使用 Gin? 如何为 Gin 做贡献? 正文 Gin 是一个用 Go (Go ...

  5. Golang 库学习笔记 Gin(二)

    介绍 Gin 是一个用 Go (Golang) 编写的 web 框架. 它是一个类似于 martini 但拥有更好性能的 API 框架, 由于 http router,速度提高了近 40 倍. 如果你 ...

  6. 【学习笔记】Golang语法学习笔记

    一.入门 go是编译型的语言,代码风格类似于C语言,其最大特点是支持并发编程,go文件后缀名为.go 在命令行通过go run helloworld.go来运行,或先通过go build hellow ...

  7. python运维开发招聘_GitHub - PlutoaCharon/LiunxNotes: 校招-运维开发(Liunx,Python,Golang)面试学习笔记...

    校招-运维开发(Liunx,Python,Golang)面试学习笔记 1. 网络基础类 2. Linux系统管理类 3. Linux服务管理类 4. 数据库管理 ​ 索引(包括分类及优化方式,失效条件 ...

  8. golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题

    golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题 今天测试了重新建一个项目生成新的表,然后复制到旧的项目 ...

  9. golang学习笔记(基础篇)

    LCY~~Golang学习笔记 一.Go语言开发环境 ##安装Go开发包以及VsCode Go开发包与vscode配置安装教程网址:https://www.liwenzhou.com/posts/Go ...

  10. Golang学习笔记之GORM基础使用(二)

    本文章主要学习GORM的增删查改.若还没有完成数据库和数据表的创建.定义模型以及数据库的连接请先学习本本专栏文章Golang学习笔记之GORM基础使用(一).本文为学习笔记,通过GORM官方中文文档和 ...

最新文章

  1. METERREC万用表测量自动记录命令
  2. Python爬虫应用实战-如何对爬取的数据进行数据存储?
  3. 十进制大数的加法运算
  4. c语言char有什么作用,C语言中char*和char[]用法区别分析
  5. 图像增强_Keras 常用的图像增强方式
  6. 计算机基础和操作系统基础知识测试,计算机基础知识和操作系统.doc
  7. linux操作系统基础与实训教程,清华大学出版社-图书详情-《Linux操作系统基础与实训教程》...
  8. bootstrapTable 取消 “正在加载中...”
  9. jz2440移植QT5.6【学习笔记】【原创】
  10. [Python] zip() 函数
  11. 基于FPGA的篮球计分器
  12. 逻辑推理题-用C++实现(2)--黑与白
  13. 论:一个草根程序员怎么进BAT??
  14. quick-cocos 3.5 lua banding c++
  15. 数据,源码防泄密解决方案
  16. 组装服务器要固态硬盘,服务器选择时,为什么要选择固态硬盘
  17. App Store风靡!当下热门应用商店简析
  18. 【精选】基于EasyX的贪吃蛇小游戏
  19. 街头立体画的创作过程
  20. 前端过程性考核,肝了一宿终于肝出来了!!!

热门文章

  1. springBoot-Quartz 定时任务
  2. 狂神说-Spring学习总结
  3. 史上最纯净的Win7专业版系统
  4. python爬取双色球2003-2022年所有数据
  5. win10系统以太网连接显示“未识别网络”问题的解决
  6. antd 时间选择器,设置显示为中文
  7. STM32 ADC采样频率的理解
  8. linux下看学校的IPTV
  9. ASME Y14.5 2018重要更新
  10. 美国经济数据公布时间