6. go数组与冒泡排序
include
- 数组的概念
- 如何定义数组
- 数组常用的用法
- 数组如何指定下标设值
- 二维数组
- 冒泡排序
数组
- 定义数组的格式: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数组与冒泡排序的更多相关文章
- 060 01 Android 零基础入门  01 Java基础语法 06 Java一维数组 07 冒泡排序
		060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序 本文知识点:冒泡排序 冒泡排序 实际案例分析冒泡排序流程 第1轮比较: 第1轮比较的结果:把最 ... 
- 8、C#基础整理(数组和冒泡排序)
		数组 概念:定义一组同类型的指定个数的变量,索引从0开始 例: ];//定义一组有10个数据的数组 shuname[] = ; Console.WriteLine(shuname[]);//打印出1 ... 
- c#部分---一维数组、冒泡排序、foreach的用法
		一维数组:2016-10-14 定义方式:{定义的时候,需要数据类型.长度!} 1.int []aa=new int [5]; 表示数组里面有5个字符: 2.int []aa=new int []{ ... 
- Python学习笔记——基础篇【第五周】——算法(4*4的2维数组和冒泡排序)、时间复杂度
		目录 1.算法基础 2.冒泡排序 3.时间复杂度 (1)时间频度 (2)时间复杂度 4.指数时间 5.常数时间 6.对数时间 7.线性时间 1.算法基础 要求:生成一个4*4的2维数组并将其顺时针旋 ... 
- C#基础——数组(冒泡排序)
		数组 所谓数组,就是相同数据类型的元素按一定的顺序的集合,就是把有限个类型相同的变量用一个名字来命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组的各个变量称为数组的分量 ... 
- javascript . 02 break和continue、while、数组、冒泡排序
		1.1 知识点 NaN是number类型 null是object类型 /** + 回车 多行注释 table 会为内部的tr td 自动补齐闭合标签 1.2 循环结构 1.2.1 Break和c ... 
- C语言数组之冒泡排序+折半查找法(二分查找)
		冒泡排序算法 将相邻的元素进行两两比较,大的向后"冒", 小的向前"赶". 口诀: N个数字来排队,两两比较小靠前 外层循环N-1(控制需要比较的轮数). 内层 ... 
- java 数组的冒泡排序
		冒泡排序 (1)冒泡排序算法的运作如下:(从后往前) 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最 ... 
- 洛谷 P4375 [USACO18OPEN]Out of Sorts G(树状数组求冒泡排序循环次数加强版)
		传送门:Problem 4375 参考资料: [1]:https://www.cnblogs.com/Miracevin/p/9662350.html [2]:https://blog.csdn.ne ... 
- 洛谷 P4378 [USACO18OPEN]Out of Sorts S(树状数组求冒泡排序循环次数)
		传送门:Problem P4378 https://www.cnblogs.com/violet-acmer/p/9833502.html 要回宿舍休息了,题解明天再补吧. 题解: 定义一数组 a[m ... 
随机推荐
- linux 删除文件,df空间不变化
			今天遇到一个问题,就是linux服务器空间满了,可是删除了软件后. 查看空间,没有变化 ???啥情况 那么去查看删除的情况吧. [root@VM_0_4_centos usr]# lsof|grep ... 
- Android Studio OkHttpClient使用
			本次来记录下OkHttpClient的使用,OkHttpClient是用来完成android 客户端对服务端请求的工具. 首先记住,使用网络的时候一定要加入权限,加入到AndroidMainfest. ... 
- MEMCACHE分布式算法(PHP)
			//测试分布式算法 $ports = array('端口1', '端口2', '端口3', '端口4', '端口5'); //Memcache端口 $users = array('1000', '10 ... 
- sparkonhbase
			import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase.client.Result impor ... 
- 深入理解IoC和DI
			本文章转载自: https://segmentfault.com/a/1190000005602011 最近在研究php的lumen框架和phalcon框架,这两个框架的底层架构都用到了IoC,DI, ... 
- 【微信小程序】tabBar的显示问题
			tabBar不显示 在app.json中配置了4个页面,在tabBar的list中随意写了两个页面,编译后发现不能显示tabBar. { "pages": [ "page ... 
- yum使用过程中的常见错误
			(1) 使用yum安装相关软件包时一直提示以下错误:repodata/repomd.xml: [Errno 4] IOError: <urlopen error (113>, Error: ... 
- java  replaceall 使用正则表达式替换单等号,不替换其他相关的等号。
			写项目需要将公式配置到数据库中,取出后根据公式规则进行比较,由于公式的等于是用单等号,在java中无法直接使用,故需要将单等号替换成双等号,单又不能影响大于等于以及其他形式.故果断选择正则表达式替换. ... 
- Graph-DFS-Map-图的深度优先遍历-城市地图问题
			#include <iostream> using namespace std; /* 5 8 1 2 2 1 5 10 2 3 3 2 5 7 3 1 4 3 4 4 4 5 5 5 3 ... 
- PHP高级程序员必学
			业务增长,给你的网站带来用户和流量,那随之机器负载就上去了,要不要做监控?要不要做负载均衡?用户复杂了,要不要做多终端兼容?要不要做CDN?数据量大了,要不要做分布?垂直分还是横向分?系统瓶颈在哪里? ... 
