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. [转]SSH和SSM对比总结

    原文地址:https://blog.csdn.net/peak_and_valley/article/details/52925032 当下流行的两种企业开发MVC开源框架,是我们Java程序猿必备知 ...

  2. 【Unity Shader】五、Shader纹理映射,及纹理的缩放和偏移

    将漫反射的颜色改为从纹理贴图中获取,逐像素计算. Shader "Custom/11-Texture" { // 纹理贴图,BlinnPhong光照模型 Properties{ / ...

  3. 【Android开源项目分析】自定义圆形头像CircleImageView的使用和源码分析

    原文地址: http://blog.csdn.net/zhoubin1992/article/details/47258639 效果

  4. 在springmvc中无法使用@value()注解

    折腾了一下午,试了很多解决办法,就是死活不能扫描到properties文件.本来打算使用软编码的,尝试更改了全部jar包版本,还是无法解决. 后面想到了,spring和springmvc容器的加载顺序 ...

  5. ubuntu14.04 64位JDK安装

    1 官网下载jdk http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html jdk-8u ...

  6. javascript弹层

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. Hbase框架原理及相关的知识点理解、Hbase访问MapReduce、Hbase访问Java API、Hbase shell及Hbase性能优化总结

    转自:http://blog.csdn.net/zhongwen7710/article/details/39577431 本blog的内容包含: 第一部分:Hbase框架原理理解 第二部分:Hbas ...

  8. vncserve安装配置 (转)

    使用服务器时,利用远程桌面是非常方便的,否则需要跑到服务器机房操作非常的费事,或者需要远程操作机器是也可以使用,一般的操作系统都会带有远程桌面功能,但是不如第三方的的软件好用,对于Linux系统常用的 ...

  9. hashMap put方法 第三行代码

    inflateTable(threshold) 分析: Hi.java public class Hi { //临界值(一个值最接近2的n次幂的数,比如7的临界值为8) int threshold; ...

  10. 第三百四十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—cookie禁用、自动限速、自定义spider的settings,对抗反爬机制

    第三百四十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—cookie禁用.自动限速.自定义spider的settings,对抗反爬机制 cookie禁用 就是在Scrapy的配置文件set ...