什么是数组
数组是是一种线性表数据结构, 存放在连续内存空间上的相同类型数据的集合。

- 数组下标都是从0开始的。
寻址公式
a[i]_address = base_address + i * data_type_size
- 数组内存空间的地址是连续的
正是因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。

数据的插入,删除
平均时间复杂度为 O(n)
数组的删除不是真正意义的删除,因为数组需要保持内存空间的连续
比如上图,删除a[3],实际上是把后面的数字往前面移动
Go 创建二维数组
// You can edit this code!
// Click here and start typing.
package main
import "fmt"
func main() {
var arr = [2][3]int{{0, 1, 2}, {3, 4, 5}}
for i := 0; i < len(arr); i++ {
for j := 0; j < len(arr[i]); j++ {
fmt.Printf("arr[%v][%v] = %v \n", i, j, arr[i][j])
fmt.Printf("arr[%v][%v]的地址=%p\n", i, j, &arr[i][j])
}
}
}
打印结果:

可以看Go数组的地址字节数相差不同
依次为:0xc000120000,0xc000120008,0xc000120010,0xc000120018,0xc000120020,0xc000120028
具体原因我会查阅下资料,后续解答
本文介绍了数组这一线性表数据结构的概念,包括其寻址公式、数据的插入与删除操作的时间复杂度,并通过Go语言实例展示了如何创建及访问二维数组。
609

被折叠的 条评论
为什么被折叠?



