C语言基础:一维整形数组

📅 2026/7/30 4:57:57
C语言基础:一维整形数组
C语言定义数组是一组相同数据类型 有限个数据的集合。1数据类型相同2数据的个数有限个功能 用来存储多个数据。多个变量。分类一维整形数组二维整形数组一维字符数组 -》 1个字符串二维字符串 -》 多个字符串多维数组 -》 二维数组以上1 定义数组​ int a3// int 数据类型 数组名[整形常量] int array[5] // array 数组名(集合名) int [] 5 可以容纳5个int 的变量 int array2[23]; ​ int array3[a2];// error a是一个变量 ​ void b;// 不能有 void类型的变量 void array4[5]; //不能有 void类型的数组 ​特性单一性 数据类型相同 2.连续性 内存空间连续存放 3.有序行 元素是有序的2.数组元素的访问数组名[下标] [] 数组下标运算符 下标从 0 开始表示第一个元素 下标 范围 0 - 容量-1 常量变量表达式类型是整形 ​ 数组不能整体操作 。定义完毕后不能整体赋值。 int a[5]; a 10; // 错误的不能操作。 ​ 数组访问的过程不要越界越界后行为不确定。 ​ 数组元素本身可以做左值或右值 ​ a[0] 10; // a[0] 数据类型 int 写入 第一元素 a[1] 20; // 数组元素作左值 写入 a[2] 30; a[3] 40; // 这是最后一个元素 a[4] 50; // 注意没有 a[5] , 这个一个越界的位置 错误 下标从0开始 // a[5] 60 // int c 0; ​ b a[1]1; // 数组元素作 右值读出 a[c] 20; ​3.初始化int main() { ​ // 定义初始化 全部初始化 注意不要越界 int a[5]{1,2,3,4,5}; ​ //局部初始化 // 初始化部分数据剩下的全部是0 int a2[5]{1,2,3}; // 全部都是0 用的多 int a3[5]{0}; ​ // 数组的容量可以是空的但必须初始化 // 编译器会根据初始化的个数填入容量 int a4[] {1,2,3}; // 不给容量也没有给初值编译报错 //int a5[]; ​ int a5[]{0}; // a5 数组中只有一个元素 return 0; }4.数组的遍历遍历有且只有一次访问数组中所有的元素操作。 int a[50]{0}; ​ 写入遍历 for(i0;isize;i) { a[i] rand()%1000; } ​ 读出遍历 for(i0;isize;i) { printf(%3d\t,a[i]); ​ }​5.数组的倒置int temp 0; //倒置 for(i0;isize/2;i) { temp a[i]; a[i] a[size-1-i]; a[size-1-i] temp; } ​6 .冒泡冒泡 升序 相邻元素依次比较 如果前面的数大交换两数 内层循环 一次 数组遍历一次 会找到最大值并存储在数组的最后。外层循环 一次 ​int j 0 ; for(j size-1;j0;j--) // 外层循环 j ,找到一个最大值存储到最后 { for(i0;ij;i) // 内层循环 i ,相邻元素比较 { if(a[i] a[i1]) { int t a[i]; a[i] a[i1]; a[i1] t; ​ } } } ​7.选择选择 升序 元素依次比较 如果前面的数大交换两数 内层循环 一次 数组遍历一次 会找到最小值并存储在数组的最前面。外层循环 一次 int j 0 ; for(j0;jsize-1;j) { for(ij1;isize;i) { if(a[j] a[i]) { int t a[i]; a[i] a[j]; a[j] t; ​ } } }插入排序二分查找折半查找前提条件序列必须有序思想升序将要查找的值和序列的中间位置值比较比中间位置值大则在后半序列中继续折半查找如果比中间值小则从前半个序列中继续折半查找如果恰好相等则找到。优势效率高----时间复杂度O(logn)i 0; j len - 1; while (i j) { mid (i j) / 2; if (num a[mid]) { i mid 1; } else if (num a[mid]) { j mid - 1; } else { printf(find %d\n, a[mid]); break; } } if (i j) { printf(Not find\n); }