include

  1. 数组的概念
  2. 如何定义数组
  3. 数组常用的用法
  4. 数组如何指定下标设值
  5. 二维数组
  6. 冒泡排序

数组

  • 定义数组的格式:var [n] , n>=0
  • 数组长度也是类型的一部分,因此具有不同的长度的数组为不同类型。
  • 注意区分指数组指针和指针数组
  • 数组在Go中为值类型。
  • 数组之间可以使用==或者!=进行比较,但是不可以使用<或>
  • 可以使用new来创建数组,此方法返回一个指向数组的指针。
  • go支持多维数组

定义数组

不同长度的数组不可以互相定义,否则编译会报错的

如下的代码:

func main() {
var a [2]int
var b [1]int
b = a
fmt.Println(b)
}
如果长度相同的两个数组,那么可以互相赋值
func main() {
var a [2]int
var b [2]int
b = a
fmt.Println(b) // 这里打印出来的结果是两个00,[0 0] //,因为没有给数组设值,所以默认就为零值
}
不同类型的数组之间也不可以互相赋值
如果定义数组的时候没有设值,那么久会使用零值
给数组设值:

1.定义数组我们可以使用简写的方式省去var,同时设值,如下所示:

func main() {
a := [3]int{1, 2, 3} // 注意为花边号
fmt.Println(a)
}

2.给指定的索引设值

func main() {
a := [10]int{9: 3} // 9为这个索引的值
fmt.Println(a)
}

3.使用三个点(...)来定义数组长度,数组的长度是动态的。

func main() {
a := [...]int{1, 2, 3, 6}
fmt.Println(a)
}

4.根据索引批量设值

func main() {
a := [...]int{0: 1, 2: 2, 6: 3, 9: 6} //因为三个点是动态的长度,所以我们的设值也可以跳跃来设
fmt.Println(a)
}

指针数组

数组存放是对象的内存地址,非人眼可识别的数值

func main() {
x, y := 1, 2
a := [...]*int{&x, &y}
fmt.Println(a)
}

数组之间的比较

go解释器 数组之间的比较是建立在数组长度和类型相同的情况下才可以比较。

func main() {
a := [2]int{1, 2}
b := [2]int{1, 2}
fmt.Println(a == b)
}

new方法设定的数组和普通方法设定的数组,都可以通过下标(比如a[x]=1)来给数组元素赋值

func main() {
a := [10]int{}
a[1] = 3
p := new([10]int)
p[1] = 2 // 都可以通过这样的方法来设定指定下标的值
fmt.Println(p, a)
}

多维数组

go也支持多维数组,和python下面的多维数组一样的效果

func main() {
a := [2][3]int{
{1, 1, 1},
{2, 2, 2},
}
fmt.Println(a)
}

修改多维数组的值

func main() {
a := [2][3]int{
{1, 1, 1},
{2, 2, 2},
}
a[1][1] = 6 // 指定下标来设值
fmt.Println(a[1])
}

go语言版冒泡排序

冒泡排序的概念就不多说了,可以参考我这篇博文

下面我们直接拿代码来练手

// heh1
package main import (
"fmt"
) func main() {
a := [...]int{5, 3, 2, 8, 9, 1} fmt.Println("a ==>", a) num := len(a) for i := 0; i < num; i++ {
for j := i + 1; j < num; j++ {
if a[i] < a[j] {
tmp := a[j]
a[j] = a[i]
a[i] = tmp
}
}
}
fmt.Println("after sort a", a)
}

6. go数组与冒泡排序的更多相关文章

  1. 060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序

    060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序 本文知识点:冒泡排序 冒泡排序 实际案例分析冒泡排序流程 第1轮比较: 第1轮比较的结果:把最 ...

  2. 8、C#基础整理(数组和冒泡排序)

    数组 概念:定义一组同类型的指定个数的变量,索引从0开始 例: ];//定义一组有10个数据的数组 shuname[] = ; Console.WriteLine(shuname[]);//打印出1 ...

  3. c#部分---一维数组、冒泡排序、foreach的用法

    一维数组:2016-10-14 定义方式:{定义的时候,需要数据类型.长度!} 1.int []aa=new int [5];  表示数组里面有5个字符: 2.int []aa=new int []{ ...

  4. Python学习笔记——基础篇【第五周】——算法(4*4的2维数组和冒泡排序)、时间复杂度

    目录 1.算法基础 2.冒泡排序 3.时间复杂度 (1)时间频度 (2)时间复杂度 4.指数时间 5.常数时间 6.对数时间 7.线性时间 1.算法基础  要求:生成一个4*4的2维数组并将其顺时针旋 ...

  5. C#基础——数组(冒泡排序)

    数组 所谓数组,就是相同数据类型的元素按一定的顺序的集合,就是把有限个类型相同的变量用一个名字来命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组的各个变量称为数组的分量 ...

  6. javascript . 02 break和continue、while、数组、冒泡排序

    1.1 知识点 NaN是number类型 null是object类型 /**  + 回车  多行注释 table 会为内部的tr td 自动补齐闭合标签 1.2 循环结构 1.2.1  Break和c ...

  7. C语言数组之冒泡排序+折半查找法(二分查找)

    冒泡排序算法 将相邻的元素进行两两比较,大的向后"冒", 小的向前"赶". 口诀: N个数字来排队,两两比较小靠前 外层循环N-1(控制需要比较的轮数). 内层 ...

  8. java 数组的冒泡排序

    冒泡排序 (1)冒泡排序算法的运作如下:(从后往前) 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最 ...

  9. 洛谷 P4375 [USACO18OPEN]Out of Sorts G(树状数组求冒泡排序循环次数加强版)

    传送门:Problem 4375 参考资料: [1]:https://www.cnblogs.com/Miracevin/p/9662350.html [2]:https://blog.csdn.ne ...

  10. 洛谷 P4378 [USACO18OPEN]Out of Sorts S(树状数组求冒泡排序循环次数)

    传送门:Problem P4378 https://www.cnblogs.com/violet-acmer/p/9833502.html 要回宿舍休息了,题解明天再补吧. 题解: 定义一数组 a[m ...

随机推荐

  1. Android学习笔记(38):Handler消息传递处理机制

    先说为什么须要Handler: Android的主线程又叫UI线程,用于处理与UI相关的时间.Android仅仅同意在主线程中改动UI组件,当我们在其它线程中须要改动UI界面时.就须要发送消息到主线程 ...

  2. 从零写Java Web框架——实现Ioc依赖注入

    大概思路 通过读取配置文件,获取框架要加载的包路径:base-package,类似于 Spring 配置文件中的: <context:component-scan base-package=&q ...

  3. InstallShield卸载不彻底,残留大量dll文件

    今天发现安装包Client装c盘能正常删除,但是放d盘不能删除dll文件. 1.d盘安装程序包 2.检查脚本文件,卸载时通过messagebox打印INSTALLDIR和TARGERDIR,发现均指向 ...

  4. SQL复制表操作

    select * into tb1 from tb2 insert into tb1 (fld1, fld2)  select fld1, 0 from tb2 where fld0='x' 以上两句 ...

  5. C语言 · 生物芯片

    标题:生物芯片 X博士正在研究一种生物芯片.博士在芯片中设计了 n 个微型光源,每个光源操作一次就会改变其状态,即:点亮转为关闭,或关闭转为点亮. 这些光源的编号从 1 到 n,开始的时候所有光源都是 ...

  6. Javascript类型转换的规则

    Javascript的变量是松散类型的,它可以存储Javascript支持的任何数据类型,其变量的类型可以在运行时被动态改变.请看示例: 1 2 3 var n = 10; n = "hel ...

  7. WebStorm 7.0 支持更多的Web技术

    JetBrains刚刚发布了WebStorm 7.0 GA,支持EJS.Mustache.Handlebars.Web组件.Stylus.Karma.Istanbul.Compass,并增强了很多功能 ...

  8. Bash Shell (十一)

    [教程主题]:Bash Shell [课程录制]: 创E [主要内容] [1] Hello World! 几乎所有的讲解编程的书给读者的第一个例子都是 Hello World 程序,那么我们今天也就从 ...

  9. Hbase 学习(二)补充 自定义filter

    本来这个内容是不单独讲的,但是因为上一个页面太大,导致Live Writer死机了,不能继续编辑了,所以就放弃了 这里要讲的是自定义filter,从FilterBase继承 public class ...

  10. openvpn之EasyRSA配置篇

    cd EasyRSA-2.2.2 vi vars #红色加粗的表示是我们需要修改的,其它的保持默认就可以 export EASY_RSA="`pwd`" export OPENSS ...