计算机科学中最基本的算法之一是二进制搜索算法。您可以使用两种方法实现二进制搜索:迭代和递归。虽然两种方法具有相同的时间复杂度,但迭代方法在空间复杂度方面要高效得多。与递归方法产生的O(logn)相比,迭代方法的空间复杂度为O(1)。那么,如何在C、C++和Python中使用迭代法实现二分查找算法呢?什么是二分查找?二进制搜索,也称为二进制搜索、对数搜索或二分法,是一种搜索并返回元素在已排序数组中的位置的算法。将搜索到的元素与中间元素进行比较。取上下界的平均值,就可以找到中间的元素。如果搜索元素大于中间元素,则意味着左边的所有元素都小于搜索元素。因此,控件通过将下限增加到中间元素的下一个位置来移动到数组的右侧(如果数组按升序排列)。同样,如果搜索元素小于中间元素,则意味着右侧的所有元素都大于搜索元素。因此,通过将上限更改为中间元素的先前位置,控件将移动到数组的左侧。与线性搜索实现相比,这大大减少了比较次数,其中比较次数等于最坏情况下的元素数。这种方法已被证明对于查找电话簿中的数字或字典中的单词非常有用。下面是二分查找算法示意图:如需完整的C、C++、Python二分查找源码,请加微信:linuxgs。C中的二进制搜索按照以下步骤在C中实现二进制搜索:该程序定义了一个函数binarySearch(),它返回找到的值的索引,如果不存在则返回-1:#includeintbinarySearch(intarr[],intarr_size,intsearch_number){/*...*/}这个函数通过迭代缩小搜索空间来工作。由于二进制搜索适用于已排序的数组,因此您可以计算中间值,否则就没有意义了。您可以向用户询问排序数组,也可以使用排序算法,例如冒泡排序或选择排序。变量low和high存储表示当前搜索空间边界的索引。mid存储中间的索引:intlow=0,high=arr_size-1,mid;主while()循环将缩小搜索空间。如果低索引的值大于高索引的值,则搜索空间已耗尽,因此该值不存在。while(low<=high){/*继续...[1]*/}return-1;在循环开始更新中点后,有三种可能的结果:如果mid的值是我们正在寻找的值,则返回该索引。如果中间值大于我们正在寻找的值,则减小最大值。如果中值较小,则增加低值。/*[1]...继续*/mid=(low+(high-low))/2;如果(arr[mid]==search_number)返回mid;elseif(arr[mid]>search_number)high=mid-1;elselow=mid+1;使用用户输入测试功能。使用scanf()从命令行获取输入,包括数组大小、内容和要搜索的数字:intmain(){intarr[100],i,arr_size,search_number;printf("请输入元素个数:");scanf("%d",&arr_size);printf("请输入数字:");for(i=0;i使用命名空间标准;使用带有提取运算符<<而不是printf()的cout和带有插入运算符>>而不是scanf()的cin,您的C++程序就可以运行了。printf("请输入元素个数:");cout<<"请输入元素个数:";scanf("%d",&arr_size);辛>>arr_size;使用Python进行二进制搜索,因为Python没有对数组的内置支持,请使用列表。定义一个函数binarySearch(),它接受三个参数、一个列表、一个大小和一个要搜索的数字:defbinarySearch(arr,arr_size,search_number):low=0high=arr_size-1whilelow<=high:mid=low+(high-low)//2ifarr[mid]==search_number:returnmidelifarr[mid]>search_number:high=mid-1else:low=mid+1return-1初始化两个变量,low和high,作为listlower和上限。与C实现类似,使用while循环来缩小搜索空间。初始化mid以存储列表的中间值。Python提供了提供最大整数的除法运算符(//)。进行比较并缩小搜索空间,直到中位数等于搜索数。如果搜索号码不存在,控件将返回-1。arr_size=int(input("请输入元素个数:"))arr=[]print("请输入数字:",end="")foriinrange(0,arr_size):arr.append(int(input()))search_number=int(input("请输入要搜索的数字:"))result=binarySearch(arr,arr_size,search_number)ifresult==-1:print("数字不存在")else:print("Numberispresentatposition",(result+1))使用用户输入测试函数。使用input()获取列表的大小、其内容和要搜索的编号。使用int()将Python默认接受的字符串输入类型转换为整数。要将数字添加到列表,请使用append()函数。调用binarySearch()并传递参数。如果找到该号码,则显示其位置或索引,否则显示一条消息,说明该号码不存在Numbernotpresent。二进制搜索算法的输出下面是数组中存在元素时二进制搜索算法的输出:以下是数组中不存在元素时二进制搜索算法的输出:LearningBasicDataStructuresandAlgorithmsSearchisoneof你学习的第一个算法,经常在编码竞赛、实习和面试中被问到。您应该学习的其他一些算法是排序、散列、动态规划、字符串匹配和素性测试算法。此外,理解算法的时间和空间复杂度也很重要。它们是计算机科学中决定任何算法效率的最关键概念之一。有了数据结构和算法的知识,你一定能构建出最好的程序。