目录
排序的介绍交换式排序法二维数组的介绍二维数组的应用场景二维数组快速入门二维数组的使用排序的介绍
排序是将一组数据,依指定的顺序进行排列的过程。
排序的分类:
(相关资料图)
1.内部排序:
指将需要处理的所有数据都加载到内部存储器中进行排序。
包括(交换式排序法,选择式排序法和插入式排序法);
2.外部排序法
数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)。
交换式排序法
交换式排序属于内部排序法,是运用数据值比较后,依判断规则对数据位置进行交换,以达到排序的目的。
交换排序法又可分为两种:
1.冒泡排序法(Bubble sort)
2.快速排序法(Quick sort)
交换式排序法-冒泡排序法
冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后部移向前部(从下标较大的单位移向下标较小的单元),就像水底下的气泡一样逐渐向上冒。
因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断是否进行过交换。从而减少不必要的比较(优化)。
// 冒泡排序 func BubbleSort(arr *[5]int){ fmt.Println("排序前arr=",(*arr)) temp := 0 // 冒泡排序 for i:=0;i(*arr)[j+1]{ // 交换 temp = (*arr)[j] (*arr)[j] = (*arr)[j+1] (*arr)[j + 1] = temp } } } fmt.Println("排序后arr=",(*arr)) }
查找
//顺序查找:方式一 for i := 0;i二分查找代码实现
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,leftIndex,middle-1,findVal) }else{ // 找到了 fmt.Printf("找到了,下标为%v \n",middle) } }二维数组的介绍
多维数组我们只介绍二维数组
二维数组的应用场景
比如我们开发一个五子棋游戏,棋盘就是需要二维数组来表示。
二维数组快速入门
快速入门案例:
请使用二维数组输出如下图形
func main(){ // 定义、声明一个数组 var arr [4][6]int // 赋初值 arr[1][2]=1 arr[2][1]=2 arr[2][3]=3 // 遍历二维数组,按照要求输出图形 for i :=0;i<4;i++{ for j:=0;j<6;j++{ fmt.Print(arr[i][j],"") } fmt.Println() } }使用方法1:先声明/定义,再赋值
1.语法:var 数组名 【大小】【大小】类型
2.比如:var arr [2][3]int,再赋值
3.使用演示
4.二维数组在内存中存在形式
使用方式2:直接初始化
声明:var 数组名【大小】【大小】类型 = 【大小】【大小】类型{{初始值…},{初始值…}}
赋值(有默认值,比如int 类型的就是0)
使用演示:
var arr3 [2][3]int = [2][3]int{{1,2,3},{4,5,6}} fmt.Println("arr3=",arr3)二维数组的使用
二维数组的遍历
双层for循环完成遍历
func main(){ // 演示二维数组的遍历 var arr3 = [2][3]int{{1,2,3},{4,5,6}} // for循环来遍历 for i := 0;ifor-range方式完成遍历
func main(){ // 演示二维数组的遍历 var arr3 = [2][3]int{{1,2,3},{4,5,6}} // for循环来遍历 for i := 0;i二维数组的应用案例
定义二维数组,用于保存三个班,每个班五名同学成绩,求出每个班级平均分,以及所有班级平均分
func main(){ // 定义一个二维数组 var scores [3][5]float64 // 循环的输入成绩 for i:=0;i到此这篇关于Golang排序和查找使用方法介绍的文章就介绍到这了,更多相关Golang排序和查找内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?