还剩29页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
数组的定义及使用数组是一种数据结构,用于存储相同类型的数据元素的集合每个元素都有一个唯一的索引,可以通过索引访问by什么是数组?数据结构线性结构数组是一种数据结构,用于存储相同类型数组属于线性数据结构,这意味着元素按的一组数据顺序排列数组中的每个元素都分配了一个唯一的索数组中的元素按顺序存储在内存中,可以引,以便可以方便地访问使用索引访问数组的特点有序性索引访问固定大小同类型元素数组元素可以按照特定顺序排每个元素都有一个唯一的索引数组的大小在创建后无法改变数组只能存储相同数据类型的列,例如从小到大或从大到小,用于快速访问和修改,需要预先确定元素数量值,例如整数、浮点数或字符数组的声明和初始化声明数组1定义数组类型和大小分配内存2系统为数组分配连续内存空间初始化3为数组元素赋值声明数组时需要指定数据类型和数组大小初始化数组可以根据需要用不同的方式对数组元素进行赋值在声明数组的同时进行初始化可以提高代码效率一维数组线性结构一维数组在内存中以线性方式存储,所有元素在内存中是连续的索引访问每个元素都有唯一的索引,通过索引可以快速访问对应元素同类型元素数组中的元素必须是相同的数据类型,例如,所有元素都是整数或字符串数组的访问索引访问1数组元素可以通过索引进行访问,索引从0开始,可以使用方括号`[]`来访问元素,例如`arr
[0]`表示访问第一个元素指针访问2使用指针可以访问数组元素,指针指向数组的首地址,可以使用指针运算符`*`来访问元素,例如`*arr`表示访问第一个元素迭代器访问3使用迭代器可以遍历数组,迭代器指向数组中的元素,可以使用`++`运算符移动到下一个元素,例如`*iter++`表示访问当前元素并移动到下一个元素数组的遍历循环遍历使用循环语句逐个访问数组元素,例如for循环每次循环迭代访问一个元素,直到所有元素都被访问过索引遍历通过数组索引访问元素,从第一个元素的索引0开始,依次递增索引值,访问每个元素迭代器遍历使用迭代器对象遍历数组,迭代器提供next方法,每次调用返回下一个元素,直到遍历完所有元素数组的常见操作添加元素删除元素12可以使用`append`或`insert`方法将新元可以使用`remove`或`pop`方法删除数组素添加到数组末尾或指定位置中特定元素或最后一个元素修改元素排序34通过索引直接访问并修改数组中特定位使用`sort`方法对数组元素进行排序,默置的元素值认升序排列二维数组定义结构二维数组由多个一维数组组成,二维数组就像一个表格,拥有行每个一维数组称为二维数组的一和列,可以存储相同数据类型的行数据索引二维数组元素通过两个索引访问,第一个索引表示行号,第二个索引表示列号二维数组的声明和初始化语法使用类型[][]数组名=new类型[行数][列数]声明二维数组,并使用数组名[行号][列号]=1值初始化数组元素示例2声明一个存储整数的二维数组,并初始化元素举例3例如,声明一个3x3的二维数组,并初始化元素二维数组声明和初始化是指在程序中创建二维数组并为其分配内存空间声明时需要指定数组的类型、名称、行数和列数初始化则是在声明的同时为每个数组元素赋值,可以使用直接赋值或循环赋值等方法二维数组的访问行索引1访问指定行列索引2访问指定列组合索引3访问特定元素二维数组通过行索引和列索引进行访问,类似于表格结构例如,访问元素arr
[2]
[3],其中2表示行索引,3表示列索引二维数组的遍历循环嵌套使用两个循环,外层循环遍历行,内层循环遍历列访问元素通过索引访问数组中的每个元素,并进行相应的操作输出结果将遍历过程中访问到的元素输出,展示数组的内容二维数组的常见操作插入删除在二维数组中插入元素,需要指定要插入的位删除二维数组中的元素,需要指定要删除的位置,并调整原有元素的位置置,并调整原有元素的位置更新查找修改二维数组中的元素,需要指定要修改的位查找二维数组中的元素,可以根据元素值或元置,并更新对应元素的值素的位置进行查找数组的应用场景数据存储图形绘制算法设计游戏开发数组可以存储相同类型的数据数组可以用来存储图形的像素数组是许多算法的基础数据结在游戏开发中,数组可以用来,方便统一管理和操作例如信息,例如,图像的RGB值、构,例如,排序算法、查找算存储游戏角色的位置、状态等,存储学生成绩、商品价格等线条的坐标等法等,它们都依赖于数组的特信息性数组在实际开发中的应用数据存储和管理算法实现数组常用于存储和管理各种类型数组是许多算法的基础数据结构的数据,例如用户列表、商品库,例如排序算法、查找算法、动存、订单记录等态规划算法等图形图像处理数组可用于表示图像像素、颜色信息等,在图像处理中发挥着重要作用数组的优缺点优点缺点•访问速度快•大小固定,不易扩展•内存使用效率高•插入和删除操作效率低•易于实现排序和查找•内存连续性要求高数组与链表的比较内存分配访问速度12数组的内存分配是连续的,而链表的内数组可以根据索引直接访问元素,而链存分配是非连续的表需要从头开始遍历插入和删除动态扩展34在数组中插入或删除元素可能需要移动数组的大小是固定的,而链表可以动态其他元素,而链表只需修改指针扩展数组的内存分配内存分配方式特点连续分配数组元素在内存中连续存放,访问效率高分散分配数组元素分散在内存中,访问效率低连续分配是数组内存分配最常用的方式数组的动态扩展需求变化1随着应用程序的增长,数据量会增加,需要更大的数组内存分配2静态分配的数组大小固定,无法满足不断增加的数据需求动态扩展3动态扩展允许在运行时调整数组的大小,以适应不断变化的数据需求数组的常见问题数组在使用过程中可能会遇到一些常见问题,例如数组越界、内存泄漏、性能问题等数组越界指的是访问数组元素时,索引值超出数组的合法范围,导致程序崩溃内存泄漏指的是由于程序错误,导致分配的内存无法释放,最终导致系统资源耗尽数组的性能问题主要体现在访问效率和内存占用方面数组的排序算法冒泡排序插入排序通过比较相邻元素并交换,将最将未排序的元素插入到已排序的大的元素逐步移动到数组末尾,数组中,保持有序性效率中等最终实现排序效率较低,但代,适合小规模数组排序码简单易懂选择排序归并排序找到数组中最小的元素并将其与将数组分成两个子数组,分别排第一个元素交换,然后重复此过序,然后将两个有序子数组合并程,直到整个数组排序完毕效成一个有序数组效率较高,适率中等,但空间复杂度低用于大规模数组排序数组的查找算法线性查找二分查找哈希查找从数组第一个元素开始,依次比较每个元素适用于有序数组,每次比较中间元素,并根通过哈希函数将元素映射到哈希表中,根据,直到找到目标元素或遍历完整个数组据目标元素与中间元素的大小关系缩小查找哈希值直接定位元素,时间复杂度为O1范围数组的逆转算法原地逆转辅助数组通过交换元素实现,时间复杂度为On/2,空间复杂度为O1创建一个新的数组,将原数组元素逆序存放,最后将新数组的值复制到原数组•使用双指针,指向数组首尾•时间复杂度为On,空间复杂度为On•不断交换指针指向的元素,直到两指针相遇•适用于数据量较小,或者不需要原地操作的情况数组的截取和合并数组截取从数组中提取特定范围的元素数组合并将多个数组组合成一个新的数组数组切片创建数组的子集,不会修改原始数组数组的去重和去重算法去重去重算法从数组中删除重复元素,保留唯实现去重的具体方法,例如哈希一元素表、排序、双指针等去重场景效率数据分析、数据清洗、搜索引擎不同去重算法的效率差异很大,等需要去除重复数据需要根据实际情况选择合适的算法数组的压缩和解压压缩解压数组压缩是指将数组中的重复元数组解压是指将压缩后的数组还素压缩成一个元素,例如,将数原成原始数组,例如,将压缩后组[1,1,2,2,3,3]压缩成[1,2,3]的数组[1,2,3]解压成[1,1,2,2,3,3]应用场景数组压缩和解压在数据存储、数据传输和数据处理等方面都有应用,例如,可以用来减少存储空间、提高传输效率和简化数据处理数组的分割和合并分割数组合并数组将一个数组拆分成多个子数组例如,可将多个子数组组合成一个新的数组例如以根据特定条件或位置将数组分割成多个,可以将多个排序好的子数组合并成一个部分新的排序好的数组•使用特定条件,例如奇数和偶数•将多个子数组直接连接起来•根据索引位置进行分割•使用合并排序算法将多个有序子数组合并成一个新的有序数组•按特定大小进行分割•根据特定条件合并多个数组数组的合并排序合并排序递归思想12它是一种高效的排序算法,通过将两个合并排序采用递归的思想,不断将数组已排序的数组合并成一个新的已排序数拆分成更小的子数组,直到每个子数组组只有一个元素,然后逐层合并比较排序稳定排序34合并排序是一种比较排序算法,通过比合并排序是一种稳定的排序算法,它保较数组元素的大小来进行排序持相同值的元素在排序后的数组中的相对顺序数组的乱序和随机随机排序打乱数组元素的顺序,使元素排列随机随机抽取从数组中随机选取一个或多个元素,用于抽奖、随机测试等场景随机样本从数组中随机抽取一定数量的元素作为样本,用于统计分析数组的滑动窗口定义1滑动窗口是指一个固定大小的窗口,它在数组上滑动用途2用于计算连续子数组的最大值、最小值或其他统计信息方法3使用双指针技术来维护窗口,一个指针指向窗口的起始位置,另一个指针指向窗口的结束位置滑动窗口算法通常用于处理窗口内的连续数据,例如股票价格、温度数据等总结与思考学习数组是编程的基础,理解数组的定义、特性和操作方法是十分重要的掌握数组的应用技巧可以提升编程效率,解决实际问题。
个人认证
优秀文档
获得点赞 0