一、数组简介
1、集合
集合一般被定义为:由一个或多个确定的元素所构成的整体。
通俗来讲,集合就是将一组事物组合在一起
集合的特性:
- 首先,集合里的元素类型不一定相同。 你可以将商品看作一个集合,也可以将整个商店看作一个集合,这个商店中有人或者其他物品也没有关系。
- 其次,集合里的元素没有顺序。 我们不会这样讲:我想要集合中的第三个元素,因为集合是没有顺序的。
- 事实上,这样的集合并不直接存在于编程语言中。然而,实际编程语言中的很多数据结构,就是在集合的基础上添加了一些规则形成的。
2、列表
列表(又称线性列表)的定义为:是一种数据项构成的有限序列,即按照一定的线性顺序,排列而成的数据项的集合。
列表的概念是在集合的特征上形成的,它具有顺序,且长度是可变的。元素类型不一定相同你可以把它看作一张购物清单:
在这张清单中:
- 购物清单中的条目代表的类型可能不同,但是按照一定顺序进行了排列;
- 购物清单的长度是可变的,你可以向购物清单中增加、删除条目。
在编程语言中,列表最常见的表现形式有数组和链表,而我们熟悉的栈和队列则是两种特殊类型的列表。除此之外,向列表中添加、删除元素的具体实现方式会根据编程语言的不同而有所区分。
3、数组
数组是列表的实现方式之一,也是面试中经常涉及到的数据结构。
正如前面提到的,数组是列表的实现方式,它具有列表的特征,同时也具有自己的一些特征。然而,在具体的编程语言中,数组这个数据结构的实现方式具有一定差别。比如 C++ 和 Java 中,数组中的元素类型必须保持一致,而 Python 中则可以不同。Python 中的数组叫做 list,具有更多的高级功能。
那么如何从宏观上区分列表和数组呢?这里有一个重要的概念:索引。
首先,数组会用一些名为 索引 的数字来标识每项数据在数组中的位置,且在大多数编程语言中,索引是从 0 算起的。我们可以根据数组中的索引,快速访问数组中的元素。
而列表中没有索引,这是数组与列表最大的不同点。其次,数组中的元素在内存中是连续存储的,且每个元素占用相同大小的内存。
相反,列表中的元素在内存中可能彼此相邻,也可能不相邻。比如列表的另一种实现方式——链表,它的元素在内存中则不一定是连续的。
4、集合,列表,数组的区别和联系
集合,列表和数组是计算机编程中常用的数据结构,它们都可以存储一组数据,但是在实际应用中有一些区别和联系。
4.1 数据类型
集合(Set)是一个不重复元素的无序组合,用于表示一组元素中的唯一值。
列表(List)是一个有序元素的集合,可以包含重复值。
数组(Array)是一组有序的元素集合,所有元素都是相同数据类型。
4.2 存储方式
集合一般使用哈希表或红黑树实现,这样可以保证其快速的查找和去重功能。
列表通常使用链表或动态数组实现,因为列表的元素顺序是可变的,可以动态添加或删除元素。
数组使用连续的内存空间来存储数据,可以使用索引访问每个元素,具有快速的随机访问和操作功能。
4.3 应用场景
集合适用于需要对数据进行去重、交集、并集、差集等操作的场景。
列表适用于需要维护元素的顺序以及进行添加、删除操作的场景,例如队列和栈等数据结构。
数组适用于需要随机访问元素的场景,例如排序、查找等算法。
4.4 代码实现
集合和列表在大多数编程语言中都有内置的实现,可以直接使用相关库或API。
数组也是大多数编程语言的基本数据类型之一,可以使用数组定义变量或者创建数组对象。
总之,集合,列表和数组都是常用的数据结构,不同的应用场景需要不同的数据结构来实现。选择合适的数据结构可以提高程序的效率和可读性。