c语言 第四章上:数组(持续更新中……)
1.数组基础①数组定义类型说明符 数组名[常量];类型说明符基本数据类型、构造数据类型(不能是void类型)。说明数组中保存的数据的数据类型。数组名遵循标识符的命名规则。常量数组中可以保存的元素的个数int a[10];sizeofa//40字节char str[32]; //32字节float array[5]; //20字节类型说明符 数组名[ ] {值1 值2};当数组定义时[ ]中的个数省略时必须要初始化将来按照初始化的元素个数决定数组的元素个数。②数组元素的访问数组名[下标];[] :下标运算符下标代表要访问数组中的第几个元素0---元素个数-1常量、变量、表达式结果都应该整形。【注意】1.数组元素访问时下标从0开始到元素个数-1超出该范围则数组越界访问。2.数组名代表了数组这种类型不能给数组名直接赋值。③数组的初始化如果不初始化数组默认存放随机值。a.全部初始化int a[10] {1,2,3,3,4,5,6,7,8,9,0};b.局部初始化int a[10] {1,2,3,4,5};已初始化部分按照初始化数据存储未初始化部分按0存储。c.初始化为全0int a[10] {0,0,0,0,0,0,0,0,0,0};int a[10] {0};④数组的存储形式单一性数组中的元素每个元素的数据类型都是一致。有序性数组中的元素按照a[0]-a[n]的顺序进行存储。连续性数组在内存中选取连续内存空间存储。数组越界1. 初始化数组时初始化的元素个数超出了数组本身的元素个数。2. 访问数组元素时[]中的下标超出了数组元素的访问范围。【练习】输入一个整型数组求和。【练习】求整型数组中的最大值最小值。【练习】输入两个数求最大公因数和最小公倍数。【练习】输入十个数据存入数组打印能被3整除余1的⑤数组排序升序、降序a.选择排序思想将待排位置的数据和后面的数据依次进行比较按照升序要求将较小值存储在待排位置。时间复杂度效率O(n^2)空间复杂度空间/内存O(1)排序算法的稳定性在一个待排序列中出现了两个相同的数据经过排序之后这两个相同数据的相对位置没有发生变化则该排序算法为稳定的排序算法假如这两个相同数据的相对位置发生了变化则该排序算法是一个不稳定的排序算法。选择排序不稳定【练习】选择排序 升序排列数组数据【练习】选择排序 降序排列数组数据b.冒泡排序思想相邻两两数据进行比较按照升序要求将较大值交换到两两中的后者位置经过一趟排序优先确定最大值。时间复杂度On^2空间复杂度O1稳定性稳定【练习】冒泡排序 降序【练习】冒泡排序 升序c.插入排序d.二分查找折半查找前提条件序列必须有序思想升序将要查找的值和序列的中间位置值比较比中间位置值大则在后半序列中继续折半查找如果比中间值小则从前半个序列中继续折半查找如果恰好相等则找到。优势效率高 ——时间复杂度O(logn)【练习】输入一个数二分法查找。