[TOC]
>[success] ## **1:排序基本介绍**
排序是将一组数据,依指定的顺序进行排列的过程。
排序的分类:
1)**内部排序**: 指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法);
2)**外部排序法**:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)。
交换式排序法
交换式排序属于内部排序法,是运用数据值比较后,依判断
规则对数据位置进行交换求以达到排序的目的。
交换式排序法又可分为两种:
1)冒泡排序法(Bubble sort)
2)快速排序法(Quick sort)
>[success] ### **1.2:冒泡排序实现**
![](https://img.kancloud.cn/15/03/1503d90edbc7bcbeb0c0f01951ff914b_1088x720.png)
>[success] ### **1.3:查找两种方式**
>[success] ### **1.4:查找基本介绍**
Golang里面有2中查找方式
1)顺序查找
2)二分查找(前提是改数组是有序的)
37.5查找实现:
推荐使用该方法
![](https://img.kancloud.cn/8a/f2/8af2f01475ebd5f65b3a91d3264ff609_1280x636.png)
>[success] ### **1.5:二分查找实现:(未理解)**
>[success] ## **2:二维数组**
多维数组只学习二维数组,二维数组引用场景有,五子棋的棋盘
![](https://img.kancloud.cn/f5/5c/f55c82ae135ff2a184f93ae4cfa7d834_1245x720.png)
>[success] ### **2.1:二维数组实现:**
#### 实现如下结果:
0 0 0 0 0 0
0 0 1 0 0 0
0 2 0 3 0 0
0 0 0 0 0 0
![](https://img.kancloud.cn/c2/89/c289480cbb182c5af978562bb0b68368_1280x573.png)
<br>
<br>
>[success] ### **2.2:二维数组多种使用**
<br>
<br>
#### **方式1:**
![](https://img.kancloud.cn/e6/43/e643bb56b6946173b8e44e640f5cfe9c_1280x387.png)
<br>
<br>
#### **方式2:** **注意**: 多维数组只有第一层可以使用...来让编译器推导数组长度。例如:
![](https://img.kancloud.cn/80/5d/805db28b9460ee511c4aa9802bf15643_1280x644.png)
<br>
<br>
>[success] ### **2.3:二维数组遍历两种方式**
#### **方式1:**
![](https://img.kancloud.cn/78/67/78678d085eef526657a79d01d2f5bf61_1003x720.png)
<br>
<br>
#### **方式2:** 使用for range
![](https://img.kancloud.cn/1f/9f/1f9fddc8654c915fb561a59092a409f2_1280x650.png)
<br>
**二维数组练习题:**
**案例1:**
// 找出数组中和为指定值的两个元素的下标,比如从数组[1, 3, 5, 7, 8]
// 中找出和为8的两个元素的下标分别为(0,3)和(1,2)
![](https://img.kancloud.cn/15/97/1597d7e493a3c80439ea6720dedc0f26_1280x594.png)
<br>
**案例2:**
// 求数组[1, 3, 5, 7, 8]所有元素的和
![](https://img.kancloud.cn/d4/6d/d46d376647c4064358f188855e22204e_1280x650.png)
>[success] ### **2.4:二维数组内存中的形式**
<br>
<br>
![](https://img.kancloud.cn/7c/52/7c523ddc33246098c31883553638cc70_1280x369.png)
<br>
<br>
>[success] ### **2.5:二维数组的应用案例:**
1)定义二维数组,用于保存三个班,每个班五名同学成绩,并求出每个班级平均分、以及所有班级平均分
![](https://img.kancloud.cn/81/bf/81bfede7a524997b70380ae61c90f8f2_1158x720.png)
>[success] ### **2.6:同类型数组赋值给另一个数组**
![](https://img.kancloud.cn/84/b6/84b67ac5779ebdcb30860f5f34a06504_1280x671.png)
**复制之后,两个数组指向同一组字符串**
![](https://img.kancloud.cn/f0/7c/f07ccadb03466a9412b9c988c5e638af_930x720.png)
**如图:两组指向同样字符串的数组**
- Golang语言之旅
- 第一章:初始小节以及安装
- 一:Golang语言特性
- 二:Windows上安装Go语言开发包
- 三:在Mac OS上安装Go语言开发包
- 第二章:GO语言注意事项
- 一:Dos的常用指令
- 第三章:Go初识小菜
- 一:Go语言之变量与常量
- 二:Go内置值-引用类型
- 三:基本的数据类型
- 四:字符串(char)
- 五:布尔类型(bool)
- 六:字符串类型(string)
- 七:基本数据类型的默认值
- 八:基本数据类型的互相转换
- 九:基本数据类型和string类型的相互转换
- 十:Golang指针
- 十一:值类型和引用类型
- 十二:标识符和命名规范
- 十三:系统保留关键字and预定义标识符
- 十四:fmt常用方法解析
- 第四章:Go运算符
- 一:运算符的基本介绍
- 二:算术运算符
- 2.1:算数运算符细节
- 三:关系运算符
- 3.1:关系运算符细节
- 四:逻辑运算符
- 4.1:逻辑运算符细节及案例
- 五:Go赋值运算符
- 5.1:案例演示赋值运算符的基本使用
- 5.2:赋值运算符的特点
- 六:Go位运算符
- 七:其他运算符
- 八:运算符的优先级
- 九:控制台输入语句
- 十:进制
- 十一:位运算
- 第五章:流程控制大纲
- 一:if语句
- 二:switch语句
- 三:for循环
- 第六章:函数-包-错误处理
- 一:Go函数
- 二:Go包
- 三:匿名函数
- 四:闭包
- 五:函数defer
- 六:函数参数的传递方式
- 七:变量的作用域
- 八:时间和日期相关函数
- 九:new和recover异常
- 十:数组(Array)切片(Section)
- 十一:切片(slice)
- 十二:3 数组的排序和查找
- 第七章:Map
- 第一节:Map基础认识
- 第二节:Map初始化和make
- 第三节:Map增删改查
- 第四节:Map的切片
- 第五节:Map的注意事项
- 第八章:面向对象(上)
- 第一节:结构体(值类型)
- 第二节:方法
- 第三节:面向对象编程应用实例
- 第九章:面向对象(下)
- 第一节:面向对象之抽象
- 第二节:面向对象之继承
- 第三节:面向对象之多态
- 第四节:接口
- 第十章:文件操作
- 第一节:文件基本介绍
- 第二季:写文件实例操作
- 第三节:JSON
- 第十一章:单元测试
- 第一节:单元测试介绍
- 第二节:单元测试案例
- 第三节:单元测试总结
- 第四节:单元测试案例
- 第十二章:goroutine和channel
- 第一节:goroutine基本介绍
- 第二节:goroutine入门案例
- 第三节:goroutione调度模型
- 第四节:Golang设置运行的CPU数量
- 第十二章:channel
- 第一节:channel基本介绍
- 第二节:channel基本使用
- 第三节:channel案例演示
- 第四节:channel 使用的注意事项
- 第五节:channel练习题
- 第六节:channel的遍历和关闭
- 第七节:goroutione和channel结合
- 第八节:channel细节处理
- 第十二章:并发模式
- 第十三章:反射reflect
- 第一节:反射基本介绍
- 第二节:反射重要的函数和概念
- 第三节:反射快速入门案例
- 第四节:反射注意事项
- 第五节:反射练习题
- 第六节:反射最佳实践