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. JAVA实用工具--javamail

    在实现javamail之前首先要搭建邮件服务器 James 在进行WEB程序开发的时候需要使用Tomcat服务器,但是Tomcat服务器并不支持邮件的处理操作,所以要想进行邮件的发送,还需要配置一个单 ...

  2. [转]Teleport Ultra/Teleport Pro的冗余代码批量清理方法

    原文地址:http://www.abcd9.com/?post=402 Teleport Pro 是款优秀的网站离线浏览工具(即网站整站下载工具),Teleport Ultra是其增强版,但使用此系列 ...

  3. java获取上周任意一天的日期

    /** * 获取上周周几的日期,默认一周从周一开始 * @param dayOfWeek * @param weekOffset * @return */ public static Date get ...

  4. linux内核seq_file接口

    seq相关头文件linux/seq_file.h,seq相关函数的实现在fs/seq_file.c.seq函数最早是在2001年就引入了,但以前内核中一直用得不多,而到了2.6内核后,许多/proc的 ...

  5. 依赖注入:Ninject学习笔记

    依赖注入(DI)就不多说了,可以自行百度,本笔记整理自Pro ASP.NET MVC5. 1,Ninject安装 Ninject是一个开源的注入容器,可以通过VS的Nuget进行安装.由于是在mvc中 ...

  6. spring中 context:property-placeholder 导入多个独立的 .properties配置文件

    spring中 context:property-placeholder 导入多个独立的 .properties配置文件? Spring容器采用反射扫描的发现机制,在探测到Spring容器中有一个 o ...

  7. TiDB 源码阅读系列文章(一)序

    原创: 申砾 PingCAP  2018-02-28 在 TiDB DevCon2018 上,我们对外宣布了 TiDB 源码阅读分享活动,承诺对外发布一系列文章以及视频帮助大家理解 TiDB 源码.大 ...

  8. node学习笔记5——post数据传递

    上一篇有讲到get数据的传递.有了上一篇的了解,今天讲下如何获取到post传递过来的数据. 通过post传送的数据,在node里面主要是通过req.on('data',function (data) ...

  9. R语言字符串替换

    R gsub Function gsub() function replaces all matches of a string, if the parameter is a string vecto ...

  10. Sword STL之仿函数概念介绍

    --介绍 函数和类似函数的对象(仿函数)遍布STL.关联容器使用它们来使元素保持有序:find_if这样的算法使用它们来控制它们的行为: 如果缺少它们,那么比如for_each和transform这样 ...