数据结构-数组

概念:数组是一种线性表数据结构,用一组连续的内容空间,来存储一组具有相同类型的数据。

1. 了解线性表(每个数据最多只有一个前驱和后继节点,eg数组、链表、队列、栈等)和非线性表(eq 树、堆、图)

2. 连续的内存空间和相同数据类型的数据,这两点使得数组可以实现随机访问

操作:

随机访问:根据下标随机访问的时间复杂度为O(1),根据数组的示意图,可知根据下标即可知道该元素的地址,具体计算公式为num[index]_addr = base_addr + data_type_size * index

插入:在确保数组有空间的情况下进行插入:

1. 如果确保原数组的顺序,在某个位置K插入某个数,需要把插入位置K以及以后的数据移动,平均复杂度为O(n)

2. 如果对原数组数据顺序没有要求,直接在最后位置插入一个数,然后和第K个的数进行调换即可,时间复杂度为O(1)

删除:删除数据,数据需要向前运动,平均时间复杂度为O(n)

1. 删除最后一个元素,时间复杂度为O(1)

2. 删除第一个元素,时间复杂度为O(n)

3. 如果有多次删除操作,可以考虑合并提高效率

注意点:

1. 数据的越界问题,数组下标从0开始,下标取值范围[0,1,2,...len-1]

2.多维数组

3. 学习高级语言的容器,对数组的封装以及动态的扩容,Java的arraylist,C++的Vector

常考面试题:

1. 数组的查找最大值、最小值、给定值、重复值

2. 数组的排序、快排、归并排序等

3. 多个数组的排序、合并、求交集、求并集

常见的优化方向:

1. 如果数组有序,可以考虑二分法用于优化

2. 如果数组无序,通常使用Hash帮助统计

. 

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、定义 数组是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 1、线性表 线性表线性...
    lesdom阅读 3,462评论 0 2
  • 1 概述 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 线性表(...
    贪睡的企鹅阅读 2,795评论 0 0
  • 在一般的数据结构教科书中,很少把数组单独列一个章节来介绍,一般都是跟着链表一起顺道介绍下,可能很多同学用了高级语言...
    monkey01阅读 2,444评论 0 0
  • 一、什么是线性表 线性表是由零个或多个数据元素组成的有限序列。 性表是有限的 线性表第一个元素无前驱,最后一个元素...
    飞__飞阅读 1,720评论 0 4
  • 1、今天收到朋友的借款,特别开心!更开心的是听到她分享的奇迹,如何当天就创造了她想要的!特别有力量的分享!感恩这分...
    喜悦兰子阅读 2,224评论 0 0

友情链接更多精彩内容