程序要求:
1、创建一个整型数组,数组内包含数字1-10
2、输入一个数字,查找输入的数字在数组内的下标并输出结果到屏幕
3、找到或未找到,均需在屏幕上输出查询结果
程序代码:
//方法一:使用for循环实现
//头文件
#include <stdio.h>
//主函数
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int search_num = 0; //查询的数字
int max = (sizeof(arr) / sizeof(arr[0])) - 1; //最大查询下标位置
int i = 0;
printf("请输入您要查询的数字:>");
scanf("%d", &search_num);
for (i = 0; i <= max; i++)
{
if (search_num == arr[i])
{
printf("恭喜,找到了!您查询的数字%d在数组内的下标为:%d\n", search_num, i);
break;
}
}
if (search_num != arr[i])
{
printf("抱歉,数组内没有您查询的数字!\n");
}
return 0;
}//方法二:主函数内使用二分查找实现
//头文件
#include <stdio.h>
//主函数
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int search_num = 0;
int left_index = 0; //数组左下标
int right_index = (sizeof(arr) / sizeof(arr[0])) - 1; //数组右下标
int mid = 0; //中间值
printf("请输入您要查询的数字:>");
scanf("%d", &search_num);
while (left_index <= right_index)
{
mid = (left_index + right_index) / 2;
if (search_num < arr[mid])
{
right_index = mid - 1;
}
else if (search_num > arr[mid])
{
left_index = mid + 1;
}
else
{
printf("恭喜,找到了!您查询的数字%d在数组内的下标为:>%d\n", search_num, mid);
break;
}
}
if (left_index > right_index)
{
printf("抱歉!数组内没有您要查询的数字!");
}
return 0;
}//方法三:使用二分查找函数实现
//头文件
#include <stdio.h>
//二分查找函数
int bin_search(int que_arr[], int left, int right, int que_num) //(查询数组, 左下标, 右下标, 查询数)
{
int mid = 0;
while (left <= right)
{
mid = (left + right) >> 1; //二进制右移1位,相当于数学上的除2运算,但相对除2运算速度更快
if (que_num < que_arr[mid])
{
right = mid - 1;
}
else if (que_num > que_arr[mid])
{
left = mid + 1;
}
else
{
return mid; //找到数字,返回下标
}
}
return -1; //未找到数字,返回-1
}
//主函数
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int search_num = 0;
int left_index = 0;
int right_index = (sizeof(arr) / sizeof(arr[0])) - 1;
int bin_num = 0; //二分查找变量,调用二分查询函数用
printf("请输入您要查询的数字:>");
scanf("%d", &search_num);
bin_num = bin_search(arr, left_index, right_index, search_num); //传递参数给二分查找函数
if (-1 == bin_num)
{
printf("抱歉,数组内没有您要查询的数字!\n");
}
else
{
printf("恭喜,找到了!您要查询的数字%d在数组内的下标为:>%d\n", search_num, bin_num);
}
return 0;
}程序解析:
1、方法一使用for循环。查找数组时从第1个下标开始查找,当查找的数据较多,且较靠近数组尾部时,运算效率较差。
2、方法二使用二分查找法。每一次查找,都可以去掉一半的数据,运算效率高。
3、方法三创建了一个二分查找函数。当程序内需要多次进行查找时,只需调用函数即可,不需要每次都编写代码。有效提高代码编写速度和效率