函数实现二分查找
✨首先我们需要自定义一个函数,在函数内需要对一个数组实现二分查找。
函数参数我们需要一个数,即我们的目标数
,和一个数组首元素的地址
。
✨对于函数的返回值,因为我们不仅仅是想知道在数组中有没有目标数,更想明确它的下标,所以函数的返回值
,我们不妨返回的是下标
。若是没有找到的话,那就返回一个负数
-1即可。(因为不会有数组元素的下标为负数的。)
✨然后我们在主函数中调用函数,传递参数即可。
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int binary_search(int n, int arr[],int sz) { int left = 0, right = sz-1; int mid = (left + right) / 2; while (left <= right) { if (arr[mid] == n) return mid; else if (arr[mid] > n) { right = mid - 1;//left不变 mid = (left + right) / 2; } else { left = mid + 1;//right不变 mid = (left + right) / 2; } } return -1; } int main() { int n = 0; int arr[10] = { 1,4,6,7,9,11,14,16,18,19 }; printf("你想要查找的数字:\n"); int sz = sizeof(arr) / sizeof(arr[0]); scanf("%d", &n); int ret = binary_search(n, arr,sz); if (ret>-1) { printf("找到了\n"); printf("下标为%d", ret); } else printf("没找到\n"); return 0; }
运行结果:
写一个函数,没调用一次这个函数,就会将num的值增加1
✨因为每调用一次函数,就要将num的变化,而能使得num变化,我们需要向函数传递num的地址,使得每调用一次,就能使num的值发生变化。
代码实现:
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> void Add(int* p) { *p = *p + 1; } int main() { int num = 3; Add(&num); printf("%d\n", num); Add(&num); printf("%d\n", num); Add(&num); printf("%d\n", num); return 0; }