一.二分查找法
在有序数组查找特定元素的一种算法,可以较为高效的找出某一元素;具体步骤是:
1.在数组中间元素查找
2.如果正好是要找的元素,则搜索过程结束
3.若某一特定元素大于或小于中间元素,就再从大于或小于数组中间元素的一半开始查找,再和开始一样从中间元素查找,重复这一过程
4.若某一数组元素为空,则代表找不到
二.二维数组的定义和使用
int arr[m][n];
m是行数,n是列数
int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};//类型名 数组名[行长度][列长度];
引用二维数组的元素需要指定两个下标,即行下标和列下标,下标取值范围同一维数组
#include <stdio.h>
int main() {
int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int i, j;
for (i = 0; i < 3; i++) { //外循环是行下标
for (j = 0; j < 4; j++) { //内循环是列下标
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
会输出所有的二维数组中的所有元素.
三.二维数组的初始化
在C语言中,二维数组的初始化可以通过以下几种方式进行:
-
逐行初始化:可以逐行进行初始化,每行内的元素使用逗号分隔,不同行之间使用大括号
{}
分隔。
int arr[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; |
-
按列初始化:可以按列进行初始化,此时需要注意,每个大括号
{}
内的元素数量应与数组的列数相同。
int arr[3][4] = {1, 5, 9, 2, 6, 10, 3, 7, 11, 4, 8, 12}; |
-
部分初始化:可以只对数组的部分元素进行初始化,未初始化的元素将被自动设置为0。
int arr[3][4] = { {1}, {5}, {9} }; |
在这个例子中,只有每个行的第一个元素被初始化,其余的元素都将被设置为0。
4. 字符串初始化:如果是字符数组,可以使用字符串进行初始化。
char arr[3][20] = { "Hello", "World", "!" }; |
请注意,以上所有的初始化方式都假设你已经提前知道了数组的大小。如果你不知道数组的大小,那么你可能需要使用动态内存分配(例如 malloc
或 calloc
函数)来创建和初始化你的二维数组。