(。・∀・)ノ゙嗨,欢迎阅读计算机科学速成课!
上集讲了一些经典算法,比如给数组排序,找图的最短路径,而上集没讲的是,算法处理的数据存在内存里的格式是什么。你肯定不想数据像约翰·格林的大学宿舍一样乱到处都是食物,衣服和纸,我们希望数据是结构化的,方便读取。因此计算机科学家发明了"数据结构"!
上集已经介绍了一种基本数据结构:,数组(Array)也叫列表(list)或向量(Vector)(在其它编程语言里)数组的值一个个连续存在内存里,所以不像之前,一个变量里只存一个值(比如j=5)我们可以把多个值存在数组变量里,为了拿出数组中某个值,我们要指定一个下标(index),大多数编程语言里,数组下标都从0开始。用方括号[]代表访问数组,如果想相加数组J的第一个和第三个元素,把结果存在变量a,可以写上图这样一行代码,数组存在内存里的方式十分易懂。
为了简单,假设编译器从内存地址1000开始存数组,数组有7个数字,像上图一样按顺序存,写j[0],会去内存地址1000,加0个偏移,得到地址1000,拿值:5。如果写j[5],会去内存地址1000,加5个偏移,得到地址1005,拿值:4,很容易混淆"数组中第5个数"和"数组下标为5的数",它们不是一回事。记住,下标5其实是数组中第6个数,因为下标是从0开始算的,数组的用途广泛,所以几乎所有编程语言都自带了很多函数来处理数组。举例,数组排序函