【Golang】查找-学习笔记
在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】查找-学习笔记相关推荐
- LearnGoProgramming-YouTube:Golang基础学习笔记
Golang学习笔记 本文是从YouTube观看视频资料Golang初学者教程时顺手做的笔记,仅供辅助学习和回顾使用.由于水平有限,可能会存在一定的翻译错误和内容错误. YouTube资料来源: 文章 ...
- IDEA 配置Go环境,编写Golang代码,学习笔记(一)
Hello,各位小伙伴们,又有一段时间没有更新了,老哥呢,最近去外面面试,发现Java已经是卷得不能在卷了,老哥没有办法,只能另辟蹊径,去卷Go,现在可以说又回到原点了. 诶,世事无常,大肠包小肠. ...
- Golang库学习笔记 Gin(三)
快速入门 今天,我们将要基于一个例子,学习如何使用GIN框架. 目录 文章目录 快速入门 目录 要求 安装 1.下载并安装 gin: 2.将 gin 引入到代码中: 3.(可选)如果使用诸如 http ...
- Golang库学习笔记 Gin(一)
GIN GIN 是Go语言的一个比较成熟的HTTP web 框架,运行速度很快. 目录 文章目录 GIN 目录 正文 如何使用 Gin? 如何为 Gin 做贡献? 正文 Gin 是一个用 Go (Go ...
- Golang 库学习笔记 Gin(二)
介绍 Gin 是一个用 Go (Golang) 编写的 web 框架. 它是一个类似于 martini 但拥有更好性能的 API 框架, 由于 http router,速度提高了近 40 倍. 如果你 ...
- 【学习笔记】Golang语法学习笔记
一.入门 go是编译型的语言,代码风格类似于C语言,其最大特点是支持并发编程,go文件后缀名为.go 在命令行通过go run helloworld.go来运行,或先通过go build hellow ...
- python运维开发招聘_GitHub - PlutoaCharon/LiunxNotes: 校招-运维开发(Liunx,Python,Golang)面试学习笔记...
校招-运维开发(Liunx,Python,Golang)面试学习笔记 1. 网络基础类 2. Linux系统管理类 3. Linux服务管理类 4. 数据库管理 索引(包括分类及优化方式,失效条件 ...
- golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题
golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题 今天测试了重新建一个项目生成新的表,然后复制到旧的项目 ...
- golang学习笔记(基础篇)
LCY~~Golang学习笔记 一.Go语言开发环境 ##安装Go开发包以及VsCode Go开发包与vscode配置安装教程网址:https://www.liwenzhou.com/posts/Go ...
- Golang学习笔记之GORM基础使用(二)
本文章主要学习GORM的增删查改.若还没有完成数据库和数据表的创建.定义模型以及数据库的连接请先学习本本专栏文章Golang学习笔记之GORM基础使用(一).本文为学习笔记,通过GORM官方中文文档和 ...
最新文章
- METERREC万用表测量自动记录命令
- Python爬虫应用实战-如何对爬取的数据进行数据存储?
- 十进制大数的加法运算
- c语言char有什么作用,C语言中char*和char[]用法区别分析
- 图像增强_Keras 常用的图像增强方式
- 计算机基础和操作系统基础知识测试,计算机基础知识和操作系统.doc
- linux操作系统基础与实训教程,清华大学出版社-图书详情-《Linux操作系统基础与实训教程》...
- bootstrapTable 取消 “正在加载中...”
- jz2440移植QT5.6【学习笔记】【原创】
- [Python] zip() 函数
- 基于FPGA的篮球计分器
- 逻辑推理题-用C++实现(2)--黑与白
- 论:一个草根程序员怎么进BAT??
- quick-cocos 3.5 lua banding c++
- 数据,源码防泄密解决方案
- 组装服务器要固态硬盘,服务器选择时,为什么要选择固态硬盘
- App Store风靡!当下热门应用商店简析
- 【精选】基于EasyX的贪吃蛇小游戏
- 街头立体画的创作过程
- 前端过程性考核,肝了一宿终于肝出来了!!!