排序与查找
排序分类
内部排序
将要处理的数据都加载到内存中进行排序:交换式排序,选择式排序,插入式排序
外部排序
数据过大无法全部加载到内存中,需借助外部存储器:合并排序,直接合并排序
冒泡排序
略
查找
顺序查找
直接找值,一般
index= -1,借助index的值确定有没有找到(推荐)
二分查找(对有序数组)
略
二维数组(五子棋游戏)
内存存在形式(重点)
使用方式(类似于一维数组)四种
定义时初始化:var arr3 [2][3]int = [2][3]int{{1,2,3},{4,5,6}}
var 数组名 [大小][大小]类型 = [大小][大小]类型{{初值..},{初值..}}
var 数组名 [大小][大小]类型 = [...][大小]类型{{初值..},{初值..}}
var 数组名 = [大小][大小]类型{{初值..},{初值..}}
var 数组名 = [...][大小]类型{{初值..},{初值..}}
煮:有一个不能写成..(第二个).
遍历:略
案例
定义二维数组,用于保存三个班,每个班五名同学成绩,
并求出每个班级平均分、以及所有班级平均分
package main
import (
"fmt"
)
func main() {
/*
定义二维数组,用于保存三个班,每个班五名同学成绩,
并求出每个班级平均分、以及所有班级平均分
*/
//1.定义一个二维数组
var scores [3][5]float64
//2.循环的输入成绩
for i := 0; i < len(scores); i++ {
for j := 0; j < len(scores[i]); j++ {
fmt.Printf("请输入第%d班的第%d个学生的成绩
", i+1, j+1)
fmt.Scanln(&scores[i][j])
}
}
//fmt.Println(scores)
//3.遍历输出成绩后的二维数组,统计平均分
totalSum := 0.0 // 定义一个变量,用于累计所有班级的总分
for i := 0; i < len(scores); i++ {
sum := 0.0 //定义一个变量,用于累计各个班级的总分
for j := 0; j < len(scores[i]); j++ {
sum += scores[i][j]
}
totalSum += sum
fmt.Printf("第%d班级的总分为%v , 平均分%v
", i+1, sum,
sum / float64(len(scores[i])))
}
fmt.Printf("所有班级的总分为%v , 所有班级平均分%v
",
totalSum, totalSum / 15 )
}