正在载入交互式动画窗口请稍等

数组-存储结构 可视化交互式动画版

图码-数据结构可视化动画版

什么是数组?

数组是存储在连续内存位置 相同变量类型的项目的集合。 它是最流行和最简单的数据结构之一,通常用于实现其他数据结构。 数组中的每个项目都从 0 开始索引。

每个程序员的梦想不仅是成为一名优秀的程序员,而且成为一名伟大的程序员。 我们都想实现我们的目标,为了实现我们的目标,我们必须有一个伟大的计划。 在这种背景下,我们决定提供一个完整的数组面试准备指南,它将帮助您解决面试中最常被问到的问题,例如什么是数组,C语言中的数组是什么,你如何做?在 C 语言中初始化数组、如何对数组进行排序等。 在这份数组面试准备完整指南中, 我们还介绍了诸如热门 理论面试问题 热门面试编码问题等主题。

Arrays 面试准备完整指南

Arrays 面试准备完整指南

我们可以通过索引值直接访问数组元素。

数组的基本术语

  • 数组索引: 在数组中,元素由其索引来标识。 数组索引从0开始。
  • 数组元素: 元素是存储在数组中的项目,可以通过其索引进行访问。
  • 数组长度: 数组的长度由它可以包含的元素数量决定。 

数组的表示

数组的表示可以通过其声明来定义。 声明意味着为给定大小的数组分配内存。

大批

大批

数组可以用不同的语言以不同的方式声明。 为了更好地说明,下面是一些特定于语言的数组声明。

C++

int arr[5];        // This array will store integer type element
char arr[10];    // This array will store char type element
float arr[20];  // This array will store float type element


              

C

Java

Python

C#

Javascript

数组声明

然而,上面的声明是 静态 编译时 内存分配,这意味着数组元素的内存是在程序编译时分配的。 这里只会分配固定大小(即方括号 [] 中提到的大小)的内存用于存储,但是您不认为这不会与我们知道数组的大小相同的情况每次,可能会出现我们不知道数组大小的情况。 如果我们声明较大的大小并存储较少数量的元素,将导致内存浪费,或者是我们声明较小的大小的情况,那么我们将不会获得足够的内存来存储其余元素。 在这种情况下,静态内存分配不是首选。

是否可以创建 动态数组 ? 

答案是 肯定的 可以动态分配内存。 所以, 动态内存分配 是在执行时或运行时分配内存空间的过程。

以下是支持动态内存分配的语言:

C++

int *array = new int[5];


              

Java

Python3

C#

Javascript

PHP

为什么需要数组数据结构?

假设有一个班有五名学生,如果我们必须记录他们的考试成绩,我们可以通过声明五个变量并跟踪记录来做到这一点,但如果学生人数变得非常多,那会怎样?操纵和维护数据具有挑战性。

这意味着,当我们有少量对象时,我们可以使用普通变量(v1,v2,v3,..)。 但如果我们想要存储大量实例,用普通变量来管理它们就变得很困难。 数组的想法是在一个变量中表示许多实例 ..

需要数组

需要数组

数组类型: 

数组主要有两种类型:

  • 一维数组(1-D array) 您可以将一维数组想象为一行,其中一个接一个地存储元素。
     
一维数组

一维数组

  • 二维数组: 2-D 多维数组 可以被视为数组的数组,也可以被视为由行和列组成的矩阵。
     
二维阵列

二维阵列

  • 三维数组: 3-D 多维数组 包含三个维度,因此可以将其视为二维数组的数组。
     
3D阵列

3D阵列

  数组运算的类型:

  • 遍历:遍历数组的元素。
  • 插入:在数组中插入一个新元素。
  • 删除:从数组中删除元素。
  • 搜索:在数组中搜索元素。
  • 排序:保持数组中元素的顺序。

使用数组的优点

  • 数组允许随机访问元素。 这使得按位置访问元素变得更快。
  • 数组具有更好的缓存局部性,这在性能上有很大的差异。
  • 数组使用单个名称表示相同类型的多个数据项。
  • 数组存储多个具有相同名称的相似类型的数据。
  • 数组数据结构用于实现其他数据结构,如链表、堆栈、队列、树、图等。

数组的缺点

  • 由于数组的大小是固定的,一旦分配了内存,就无法增加或减少,因此无法在需要时存储额外的数据。 固定大小的数组称为静态数组。 
  • 为数组分配少于所需的内存会导致数据丢失。
    数组本质上是同构的,因此单个数组不能存储不同数据类型的值。 
  • 数组将数据存储在连续的内存位置,这使得删除和插入非常难以实现。 通过实现链表可以克服这个问题,链表允许顺序访问元素。  

数组的应用

  • 它们用于实现其他数据结构,例如数组列表、堆、哈希表、向量和矩阵。
  • 数据库记录通常以数组的形式实现。
  • 它用于计算机的查找表。
  • 它用于不同的排序算法,例如冒泡排序、插入排序、合并排序和快速排序。

热门理论面试问题

编号

问题

回答

1 如果不初始化数组会发生什么? 看法
2 为什么从数组中获取值的复杂度是 O(1) 看法
3 什么时候应该使用数组而不是列表? 看法
4 什么是循环排序数组? 看法
5 使用哈希图比较两个数组? 看法
6 “链表相对于数组有什么优点? 我们在什么场景下 
使用LinkedList,什么时候使用Array?”
看法
7 如何迭代多维数组的行和列? 看法
8 稀疏数组是什么意思? 看法
9 堆相对于排序数组有什么好处?  看法
10 int[] a 和 int a[] 有什么区别吗? 看法
11 我们可以将数组大小声明为负数吗? 看法
12 我们知道数组是对象,为什么我们不能写strArray.length()呢? 看法
13 排序数组有什么优点?   看法
14 什么定义了数组的维数?   看法
15 如何检查数组是否包含值? 看法
16 如何在另一个数组/列表中创建数组/列表? 看法
17 号 如何获取数组中最大和最小的数? 看法
18 如何返回多维数组中字符串的坐标/索引? 看法
19 如何从 Java 数组中删除对象? 看法
20 C如何在多维数组中分配数据项? 看法
21 获取二维数组中的相邻元素? 看法
22 C++ 如何使用和传递 3 维 char 数组? 看法
23 Java 中的匿名数组 看法
24  Java中数组的默认值是多少? 看法
25 如何将一个数组复制到另一个数组中? 看法
26 java中如何迭代数组? 看法
27 如何将两个已排序数组合并为一个已排序数组? 看法
28 我们可以在Java中使数组可变吗? 看法
29 反转数组的逻辑是什么? 看法
30 如何获取数组元素的索引? 看法
31 我们可以在初始化后扩展数组吗? 看法
32 如何填充数组中的元素(立即初始化)? 看法
33 Java中数组和字符串的区别 看法
34 打印总和为 0 的所有子数组 看法
35 数组的平衡索引 看法
36 如何检查数组是否包含值? 看法
37 如何从数组中取出前两个数字? 看法
38 如何用一个数组实现3个栈?  看法

前 50 个面试编码问题

数组上的简单问题

编号

问题

文章

实践

1 编写一个程序来反转数组 看法 解决
2 查找数组中的最小和最大元素 看法 解决
3 峰元 看法 解决
4 编写一个程序对给定数组进行排序 看法 解决
5 查找数组中第 K 大和第 K 小的数 看法 解决
6 查找数组中整数的出现次数 看法 解决
7 对 0、1 和 2 的数组进行排序 看法 解决
8 具有给定 Sum 的子数组 看法 解决
9 将所有负数元素移动到数组的一侧 看法 解决
10 求两个已排序数组的并集和交集 看法 解决

数组中的中等问题

编号

问题

文章

实践

1 编写一个程序,将数组循环旋转一位 看法 解决
2 找到缺失的整数 看法 解决
3 计算给定总和的对 看法 解决
4 查找数组中的重复项 看法 解决
5 使用快速排序算法对数组进行排序 看法 解决
6 查找三个排序数组中的共同元素 看法 解决
7 查找整数数组中的第一个重复元素 看法 解决
8 查找给定整数数组中的第一个非重复元素 看法 解决
9 1 和 0 相等的子数组 看法 解决
10 以交替的正项和负项重新排列数组 看法 解决
11 查找是否存在总和为零的子数组 看法 解决
12 找到最大和的连续子数组 看法 解决
13 求一个大数的阶乘 看法 解决
14 求最大乘积子数组 看法 解决
15 找到最长的连续子序列 看法 解决
16 查找旋转和排序数组中的最小元素 看法 解决
17 号 配置中的最大总和 看法 解决
18 最低平台 看法 解决
19 最小化高度之间的最大差异 看法 解决
20 到达终点的最少跳跃次数 看法 解决
21 库存跨度问题 看法 解决
23 找到总和为给定值的三元组 看法 解决
23 最小正缺失数 看法 解决
24 查找 1 数量最多的行 看法 解决
25 以螺旋方式打印矩阵 看法 解决
26 判断一个数组是否是另一个数组的子集 看法 解决
27 在数组中实现两个堆栈 看法 解决
28 多数元素 看法 解决
29 波阵 看法 解决
30 收集雨水 看法 解决

难题

编号

问题

文章

实践

1 最大索引 看法 解决
2 两个数组中的最大总路径 看法 解决
3 查找缺失和重复 看法 解决
4 股票买卖问题 看法 解决
5 与排序数组中的给定总和配对 看法 解决
6 巧克力分配问题 看法 解决
7 划分相等子集和 看法 解决
8 无法表示为和的最小正整数 看法 解决
9 硬币找零问题 看法 解决
10 最长交替子序列 看法 解决

有关数组的常见问题 (FAQ)

1.什么是数据结构中的数组并举例说明?

数组是存储在连续内存位置的相同数据类型的项目的集合。 前任。 int arr[5] = {1,2,3,4,5};

2.为什么数组是一种数据结构?

数组存储相同类型的元素,它们被归类为同类数据结构。 它们可以存储数字、字符串、字符、布尔值(true 和 false)、对象等。

3. 数组是什么数据结构?

 数组是一种 线性数据结构 ,它将相似的元素存储在连续的内存位置中。

4. 数组有哪些类型?

数组主要有两种类型:

  • 一维数组
  • 多维数组

5. 数据如何存储在数组中?

数组是存储在连续内存位置的相同数据类型的项目的集合,或者说元素一个接一个地存储在内存中。 数组使用从 0 开始到 (n-1) 的索引系统,其中 n 是其大小。

6. 数组和结构体的区别?

结构体可以包含不同类型的变量,但数组只能包含相同类型的变量。 

7. 数组有哪些限制?

数组是相同数据类型的项目的集合。 这意味着,在整数数组中只能存储整数值,而在浮点数组中只能存储浮点值,而字符数组只能存储字符。 因此,任何数组都不能具有两种数据类型的值。

8. 阵列有什么优点?

数组数据结构有多种优点,其中包括:

  • 数组允许随机访问元素。 这使得按位置访问元素变得更快。
  • 数组存储多个具有相同名称的相似类型的数据。
  • 数组数据结构用于实现其他数据结构,如链表、堆栈、队列、树、图等。

9. 使用数组的目的是什么?

当需要使用多个相同类型的变量时,可以使用数组,并且可以将其定义为相同类型的对象序列。  

10.什么是多维数组?

多维数组可以称为以表格形式存储同质数据的数组的数组。 多维数组 中的数据 按行优先顺序存储。 

结论

经过讨论,我们得出的结论是,数组是一种通过对相同类型的元素进行分组来访问元素的简单方法,我们可以通过元素的索引有效地找到元素,并可以使用它们执行不同的操作。 因此,它们在内存分配方面更加高效,并且应该在所有现代编程语言中使用。 因此,这成为面试时最喜欢的话题,大多数公司普遍询问阵列上的问题。 由于所有这些原因,我们必须对其有充分的了解。

相关文章:

  • 如何开始数据学习DSA?
  • 竞争性编程 – 完整指南
  • 如何轻松掌握数据结构和算法?
  • 为什么数据结构和算法很重要?
  • 编码挑战和竞赛排名前 15 的网站
  • SDE SHEET – SDE 准备的完整指南
  • Amazon SDE 表 – Amazon SDE 面试准备指南
  • 软件工程师的 Google 面试准备 – 完整指南
  • 100 天编程 – 初学者和经验丰富的人的完整指南

无论你的目标是考试成功、职业发展,还是纯粹的兴趣,这个数据结构和算法可视化的网站都会是一个无价的资源。

前往这个网站,开始你的学习之旅吧!

这些是常见的:【C语言描述】《数据结构和算法》数据结构JAVA实现 数据结构与算法基础(青岛大学-王卓)数据结构与算法王道数据结构c语言实现 速成数据结构期末考前救急 数据结构视频C语言版教程 数据结构严蔚敏 数据结构郝斌 数据结构考研 JAVA数据结构算法与基础 数据结构王道 2022数据结构学习 数据结构小甲鱼 王卓 学习数据结构 数据结构浙江大学 数据结构复习 数据结构马士兵 数据结构零基础教程 数据结构和算法 数据结构入门 考研数据结构习题讲解 数据结构期末复习 计算机二级