写一个函数,实现一个整形有序数组的二分查找。
程序员文章站
2024-03-17 14:34:34
...
C语言 写一个函数,实现一个整形有序数组的二分查找
//按理说,指针和数组是互不相关的两个概念.不能说有区别
//但是C语言中把两个搞混了.两者有点像而已
//数组可以批量创建相同类型变量.
//指针是一个单独变量,里面存的是一个整数,整数的含义是内存中的一个地址.
//数组很多时候都能隐形转成指针.
//指针也可以像一个数组一样使用(可以支持[])
#include <stdio.h>
#include <stdlib.h>
//写一个函数,实现一个整形有序数组的二分查找
int BinarySearch(int* arr, int size, int tofind){
//[left, right] 待查找区间
int left = 0;
int right = size - 1;
//若int right = sizeof(arr) / sizeof(arr[0]) - 1;
//输出right = 0, 数组会隐形转成一个指针.
while (left <= right){
int mid = (left + right) / 2;
if (arr[mid] < tofind){
//要去右侧区间查找
left = mid + 1;//mid这个位置已查找
}else if (arr[mid] > tofind){
//去左侧区间找
right = mid - 1;
}else{
//找到了
return mid;//返回位置的下标
}
}
return -1;//-1表示没找到
}
int main(){
int arr[] = { 1, 2, 3, 4, 5, 6, 7 };
int size = sizeof(arr) / sizeof(arr[0]);
int ret = BinarySearch(arr, size, 2);//找2.
printf("ret = %d\n",ret);
system("pause");
return 0;
}
上一篇: PTA甲级15进制转换
下一篇: 牛客网机试题-用户喜好
推荐阅读
-
写一个函数,实现一个整形有序数组的二分查找。
-
写一个函数,实现一个有序数组的二分查找。
-
二分法查找有序数组中大于等于v的第一个数
-
在一个有序(增序)数组中查找具体的某个数字n 与二分法查找算法
-
C++实现LeetCode(34.在有序数组中查找元素的第一个和最后一个位置)
-
算法007:二分查找 请实现有重复数字的有序数组的二分查找,输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一
-
算法007:二分查找 请实现有重复数字的有序数组的二分查找,输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一
-
C++实现LeetCode(34.在有序数组中查找元素的第一个和最后一个位置)
-
C语言用函数实现,二分法查找有序数组中的数,若没有返回1
-
3.24_函数实现一个整型有序数组的二分查找