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. python pandas ---Series,DataFrame 创建方法,操作运算操作(赋值,sort,get,del,pop,insert,+,-,*,/)

    pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包 pandas 也是围绕着 Series 和 DataFrame 两个核心数据结构展开的, 导入如下: from panda ...

  2. Android Toolbar的使用 顶部标题栏+后退键

    最近设计安卓里面有个标题栏,里面有个后退键,可以完成后退之类的功能. 好,刚好可以用Toolbar去实现 上代码:activity_main.xml <?xml version="1. ...

  3. Selenium (4) —— Selenium是什么? WebDriver是什么?做什么?(101 Tutorial)

    Selenium (4) -- Selenium是什么? WebDriver是什么?做什么?(101 Tutorial) selenium版本: v2.48.0 (Standalone Seleniu ...

  4. hbase源码系列(五)Trie单词查找树

    在上一章中提到了编码压缩,讲了一个简单的DataBlockEncoding.PREFIX算法,它用的是前序编码压缩的算法,它搜索到时候,是全扫描的方式搜索的,如此一来,搜索效率实在是不敢恭维,所以在h ...

  5. MySQL 入门教程

    目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数据类型 五.使用MySQL数据库 ...

  6. LibGDX skins

    https://github.com/czyzby/gdx-skins ———————————————————————————————————————————— LibGDX comes with a ...

  7. SwipeBackLayout侧滑返回显示桌面

    SwipeBackLayout是一个很好的类库,它可以让Android实现类似iOS系统的右滑返回效果,但是很多用户在使用官方提供的Demo会发现,可能出现黑屏或者返回只是看到桌面背景而没有看到上一个 ...

  8. 启动LINUX系统后,进入图形化界面的命令

    1.进入xWindow的命令 $startx回车 或者修改/etc/inittab文件 cd /etc vi inittab 寻找: id:3:initdefault: 改为: id:5:initde ...

  9. Ext3.4实现增删查改(form版)

    var TaskPolicyStore = new Ext.data.JsonStore( {    autoLoad : false,    url : 'PolicyServlet?method= ...

  10. 00-01.PHP 网站假设win7配置自己的IIS服务器亲自做的图文很详细 [转 - 赞 ]

    win7配置自己的IIS服务器亲自做的图文很详细 分步阅读 跟人网站爱好初学者必看的win7系统配置自己的IIS,可以在你自己的电脑上配置网站服务器发不到网上,下面就跟着我的步骤一起做吧100%成功. ...