还剩21页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
C++课件第07章数组•数组的概述目录•数组的声明与初始化•数组的操作Contents•数组的应用•数组的注意事项01数组的概述数组的定义数组是一种数据结构,数组的大小在声明时用于存储具有相同类确定,并在整个生命型元素的集合周期内保持不变数组中的每个元素通过索引进行访问和操作数组的特性01020304数组中的元素具有相同的类型数组的大小在声明时确定,且数组元素可以通过索引进行随数组的索引从0开始,到数组不能更改机访问和修改长度减1数组的用途01020304存储大量相同类型的数对数据进行批量处理和实现数据的排序、查找作为函数参数传递大量据操作和筛选等算法数据02数组的声明与初始化数组的声明数组的元素类型数组中的元素必须是相同的数据类数组的声明方式型,例如int arr
[10];中的元素都是整型使用数据类型和数组名来声明数组,例如int arr
[10];声明了一个名为arr的整型数组,包含10个元素数组的大小数组的大小在声明时必须指定,且大小必须是常量表达式,不能是变量数组的初始化初始化方式初始化值的数量初始化值的顺序可以在声明时直接对数组进行初如果初始化值的数量少于数组的初始化值的顺序必须与数组的索始化,例如int arr
[10]=大小,则未初始化的元素会被自引顺序一致,否则会导致数组元{1,2,3,4,5,6,7,8,9,10};也可以动赋值为0如果初始化值的数素的值混乱在声明后使用赋值语句对数组进量多于数组的大小,则超出的部行初始化分会被忽略数组的赋值赋值方式可以使用赋值语句对数组进行赋值,例如arr
[0]=1;将数组arr的第一个元素赋值为1也可以使用复制构造函数或拷贝赋值运算符对整个数组进行赋值赋值规则数组赋值时,会按照元素的顺序逐个赋值,如果数组的大小不一致,则较小的数组会被较大的数组截断,超出的部分会被忽略如果两个数组的元素类型不一致,则需要进行强制类型转换03数组的操作数组的遍历010203顺序遍历逆序遍历二分法遍历按照数组下标的顺序,从按照数组下标的逆序,从在有序数组中,采用二分第一个元素开始逐个访问最后一个元素开始逐个访查找法进行遍历,每次比数组元素问数组元素较中间元素与目标值,缩小搜索范围数组的排序冒泡排序插入排序通过相邻元素之间的比较和交换,将将未排序的元素插入到已排序序列的较大的元素逐渐往后移动,最终实现合适位置,使得已排序序列保持有序,整个数组的有序排列直到所有元素均插入完毕选择排序每次从未排序的元素中找到最小(或最大)的元素,存放到已排序序列的末尾(或开头),直到所有元素均排序完毕数组的查找线性查找从数组的第一个元素开始逐个比较,直到找到目标元素或遍历完整个数组二分查找在有序数组中,通过不断缩小搜索范围来查找目标元素,每次比较中间元素与目标值,若目标值存在则确定其所在范围,否则继续在相应范围内查找04数组的应用数组在排序算法中的应用冒泡排序通过数组元素之间的比较和交换,将最大(或最小)的元素逐渐“冒泡”到数组的一端,从而实现排序选择排序在未排序的数组中找到最小(或最大)的元素,将其放到排序序列的起始位置,然后从剩余未排序的元素中继续寻找最小(或最大)的元素,放到已排序序列的末尾,以此类推,直到所有元素均排序完毕插入排序将数组分为已排序和未排序两部分,初始时已排序部分包含一个元素,然后从未排序部分取出元素,并在已排序部分找到合适的位置插入,重复此过程,直到未排序部分元素为空数组在查找算法中的应用线性查找01从数组的一端开始,逐个比较元素,直到找到目标元素或遍历完整个数组二分查找02将数组分为两半,比较中间元素与目标值的大小关系,然后根据比较结果在数组的一半中继续查找,以此类推,直到找到目标元素或确定目标元素不存在于数组中哈希查找03利用哈希函数将键转化为数组下标,直接在数组中查找目标元素数组在数据结构中的应用数组作为线性数据结构具有顺序存储和随机访问的特点,可以方便地实现数据的插入、删除和查找等操作动态数组通过动态内存分配实现可变大小的数组,可以方便地扩展和收缩数组的大小多维数组用于表示多维数据结构,如矩阵、三维空间等,可以方便地实现多维数据的存储和操作05数组的注意事项数组越界问题数组越界是指访问数组元素时超出了数组的实际大小,导致访问到无效的内存地址数组越界可能导致程序崩溃、未定义行为或安全漏洞避免数组越界的方法包括检查索引值、使用循环时确保循环变量的范围、使用安全的函数和算法数组内存管理问题避免数组内存管理问题的建议包括数组的内存分配是在栈上进行的,当不要在数组生命周期内修改其大小、数组超出作用域时,内存会自动释放使用智能指针或动态分配来管理内存如果在数组生命周期内修改了其大小,可能会导致内存泄漏或未定义行为多维数组的使用问题多维数组可以用于表示更复杂的多维数组的内存布局是连续的,使用多维数组时,需要注意避免数据结构,但使用时需要注意维但每个维度的大小可能不同维度混淆和越界访问度和索引的计算THANKS。