什么是数组?
?“数组是指有序的元素序列。如果将有限个类型相同的变量的集合命名,那么这个名称就是数组名,而组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。” ?“数组是可以在内存中连续存储多个同种类型元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从0开始。”
优缺点
【优点】
- 按照索引查询元素速度快;
- 能存储大量数据;
- 按照索引遍历数组方便;
数组中数据存储在内存中是连续的,并且同一数组中数据的大小也相同,更方便遍历
- 数组定义简单,而且访问很方便;
- 可以随机访问其中的元素。
优点总结
首先数组中存储的都是同种数据类型的数据,即表示占用的内存空间相同,并且数组中所有的数据都直接存放在内存中,并且连续,可以直接进行访问内存中的指定区域,则数组也就支持了随机访问。并且根据排列的顺序,设定了索引,根据索引进行访问,实质上还是直接访问的内存,性能开销极小,并且效率极高。
【缺点】
- 根据内容查找元素的速度慢;
- 数组的大小一但确定则不能改变,无法进行扩容,即不能实现动态内存;
- 数组仅能存储同一种类型的数据;
- 增加、删除元素效率慢;
- 未封装任何方法,所有操作都需要用户自己定义;
- 数组一旦确定大小,无论是否使用都占用空间存储,造成了性能浪费;
- 数组的空间必须是连续的,这就造成数组在内存中分配空间时必须找到一块连续的内存空间。所以数组不可能定义的太大,因为内存中不可能有那么多大的连续的内存空间,而解决这个问题的方法就是使用链表。
缺点总结
因为数组在使用之前就必须确定好数组的大小,以及数组中存储的数据类型,其数据内容全部存储在内存中,并且连续,这就说明,数组必须在内存中找到一块足够大的连续的内存空间才能进行存储,但相比于硬盘,内存的存储空间是珍贵的,不能长时间大量占用,对内存造成了浪费,即对性能的浪费,数组一旦创建,即表明着在内存中开辟了相关的内存空间,如若想对数组进行扩容是几乎不可能的,消耗的性能是非常大的,创建以后,无论是否使用,都占用内存。
实战练习题
源代码:https://gitee.com/ihaner/leetcode/blob/master/src/problem/leet1929/
源代码:https://gitee.com/ihaner/leetcode/blob/master/src/problem/leet1920/
源代码:https://gitee.com/ihaner/leetcode/blob/master/src/problem/leet1480/
补充
如果在阅读本文时发现某处地方有错误,请在评论区直接指出来,或者博主的练习题做的不好的地方也可以评论区留言,或者直接在Gitee上留言,谢谢大家
|