![]() |
#2
Remained2022-02-21 19:45
|

//二分查找Bnary_Search:在一个数组中查找具体某个数,如果找到就返回该数,找不到就返回-1
#include<stdio.h>
int Search_Num(int arr[],int Find_Num,int Size);
//在一个数组中查找具体某个数,
//如果找到就返回该数,找不到就返回-1
int main()
{
int arr[]={0,1,2,3,4,5,6,7,8,9,10}; //0-10 查找的数字库
int Find_Num = 0;//你要找的数字
int ret = 0; //返回值
int Size = sizeof(arr)/sizeof(arr[0]);// 该数组大小/数组中一个数字的大小=该数组中数字的个数
printf("从0-10中输入一个要寻找的数字:\n");
scanf("%d",&Find_Num);
ret = Search_Num(arr,Find_Num,Size);//二分法查找函数
//此处arr为首元素的地址
if(ret == -1)
{
printf("找不到指定数字\n");
}
else
{
printf("找到了,下标是:%d\n",ret);
}
return 0;
}
//arr本质上是一个指针
int Search_Num(int arr[],int Find_Num,int Size)//输入一个数组,一个需要查找的数字 一个数组中数字个数
{
int left = 0;//定义左下标
int right = Size-1;//定义右下标
while(left<=right)//只要左下标还小于等于右下标就表示还有数字可以寻找
{
int mid =(left+right)/2; //中间元素下标
if(arr[mid]<Find_Num) //该数组中中间一个数比要找的数小
{
left=mid+1; //左边元素下标变为中间元素下标+1
}
else if(arr[mid]>Find_Num) //如果该数组中间元素下标比要找的数大
{
left=mid-1; //左边元素下标变为中间元素下标-1
}
else
{
return mid; //反馈该数
}
}
return -1; //找不到反馈-1
}
#include<stdio.h>
int Search_Num(int arr[],int Find_Num,int Size);
//在一个数组中查找具体某个数,
//如果找到就返回该数,找不到就返回-1
int main()
{
int arr[]={0,1,2,3,4,5,6,7,8,9,10}; //0-10 查找的数字库
int Find_Num = 0;//你要找的数字
int ret = 0; //返回值
int Size = sizeof(arr)/sizeof(arr[0]);// 该数组大小/数组中一个数字的大小=该数组中数字的个数
printf("从0-10中输入一个要寻找的数字:\n");
scanf("%d",&Find_Num);
ret = Search_Num(arr,Find_Num,Size);//二分法查找函数
//此处arr为首元素的地址
if(ret == -1)
{
printf("找不到指定数字\n");
}
else
{
printf("找到了,下标是:%d\n",ret);
}
return 0;
}
//arr本质上是一个指针
int Search_Num(int arr[],int Find_Num,int Size)//输入一个数组,一个需要查找的数字 一个数组中数字个数
{
int left = 0;//定义左下标
int right = Size-1;//定义右下标
while(left<=right)//只要左下标还小于等于右下标就表示还有数字可以寻找
{
int mid =(left+right)/2; //中间元素下标
if(arr[mid]<Find_Num) //该数组中中间一个数比要找的数小
{
left=mid+1; //左边元素下标变为中间元素下标+1
}
else if(arr[mid]>Find_Num) //如果该数组中间元素下标比要找的数大
{
left=mid-1; //左边元素下标变为中间元素下标-1
}
else
{
return mid; //反馈该数
}
}
return -1; //找不到反馈-1
}