排序和查找3

时间:2019-08-23
本文章向大家介绍排序和查找3,主要包括排序和查找3使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

多维数组我们只介绍二维数组。

二维数组的应用场景:

比如我们开发一个五子棋游戏,棋盘就是需要二维数组来表示。

二维数组的使用:

快速入门案例:
请用二维数组输出如下图形
0 0 0 0 0 0
0 0 1 0 0 0
0 2 0 3 0 0
0 0 0 0 0 0

代码演示:

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)二维数组在内存的存在形式(重点)

func main() {

  //定义/声明 二维数组
  var arr2 [2][3]int
  arr2[1][1] = 10
  fmt.Println(arr2)

  fmt.Printf("arr2[0]的地址%p \n", &arr2[0])
  fmt.Printf("arr2[1]的地址%p \n", &arr2[1])

  fmt.Printf("arr2[0][0]的地址%p \n", &arr2[0][0])
  fmt.Printf("arr2[1][0]的地址%p \n", &arr2[1][0])
}

打印的结果:

 二维数组在内存的布局的示意图:

 使用方式2:直接初始化

  1)声明:var 数组名 [大小][大小]类型 = [大小][大小]类型{{初值..},{初值..}}

  2)赋值(有默认值,比如int 类型的就是0)

  3)使用演示

  4)说明:二维数组在声明/定义时也对应有四种写法【和一维数组类似】

  var 数组名 [大小][大小]类型 = [大小][大小]类型{{初值..},{初值..}}
  var 数组名 [大小][大小]类型 = [...][大小]类型{{初值..},{初值..}}
  var 数组名 = [大小][大小]类型{{初值..},{初值..}}
  var 数组名 = [...][大小]类型{{初值..},{初值..}}


func main() {

  var arr3 [2][3]int = [2][3]int{{1,2,3},{4,5,6}}
  fmt.Println("arr3=", arr3)
}

二维数组的遍历:

1)双层for循环完成遍历

案例演示:

func main() {

  var arr3 = [2][3]int{{1,2,3},{4,5,6}}

  //for循环遍历
  for i := 0; i < len(arr3); i++ {
    for j := 0; j < len(arr3[i]); j++ {
      fmt.Printf("%v\t", arr3[i][j])
    }
    fmt.Println()
  }
}

2)for-range 方式完成遍历

案例演示:

func main() {

  var arr3 = [2][3]int{{1,2,3},{4,5,6}}

  //for-range来遍历二维数组
  for i,v := range arr3 {
    for j,v2 := range v{
      fmt.Printf("arr3[%v][%v]=%v \t", i, j, v2)
    }
    fmt.Println()
  }
}

小例子:

定义二维数组,用于保存三个班,每个班五名同学成绩,并求出每个班级平均分、以及所有班级平均分。

func main() {

  var scores [3][5]float64
  //循环的输入成绩
  for i := 0; i < len(scores); i++ {
    for j := 0; j < len(scores[i]); j++ {
      fmt.Printf("请输入第%d班的第%d个学生的成绩\n", i+1, j+1)
      fmt.Scanln(&scores[i][j])
    }
  }

  //遍历输出成绩后的二维数组,统计平均分
  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 \n", i+1, sum, sum / float64(len(scores[i])))
  }

  fmt.Printf("所有班级的总分为%v, 所有班级平均分%v \n", totalSum, totalSum / 15)
}

原文地址:https://www.cnblogs.com/green-frog-2019/p/11403019.html