1.二分查找算法,也称折半搜索算法 ,是一种在有序数组中查找某一特定元素的搜索算法。 2.二分查找法思路 举一个简单例子,10名同学,按1到10顺序站好,想要找到Fan这个人,将10人中间位置序号对应的名字与所要查找名字比较,如果两者相等,则查找成功;否则利用中间位置序号,分成前、后两个部分,如果中间位置序号大于查...
三.使用二分查找法优化程序 示例代码: #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<windows.h>intmain(void){intnum=0;intarr[]={1,2,3,4,5,6,7,8,9};intsz=sizeof(arr)/sizeof(arr[0]);intleft=0;intright=sz-1;printf("Please enter the number:");scanf("%d",&num);wh...
二分查找的前提条件是有序数列,普通查找则不需要。查找到返回该元素的下标,否则返回-1。普通查找的时间复杂度为O(N), 二分查找的时间复杂度为O(logN)。N/2/2···/2=1,2^m=N(m为折半查找的次数),那么m=log(N),二分查找的时间复杂度就为O(logN)。📚 1.4 代码实现 1.4.1 初始化数...
int arr[16] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 }; int sz = sizeof(arr) / sizeof(arr[0]); //sizeof数组名表示整个数组的大小, //除以数组第一个元素的大小得到的就是数组的长度。 int i = 0; int n = 0;//n是我们要输入想要查找的数字 scanf("%d", &n); for...
二分査找也称折半査找,其优点是查找速度快,缺点是要求所要査找的数据必须是有序序列。 该算法的基本思想是将所要査找的序列的中间位置的数据与所要査找的元素进行比较,如果相等,则表示査找成功,否则将以该位置为基准将所要査找的序列分为左右两部分。 接下来根据所要査
1.3 查找条件 二分查找的前提条件是有序数列,普通查找则不需要。 查找到返回该元素的下标,否则返回-1。 普通查找的时间复杂度为O(N), 二分查找的时间复杂度为O(logN)。 N/2/2···/2=1,2^m=N(m为折半查找的次数),那么m=log(N),二分查找的时间复杂度就为O(logN)。
二分査找也称折半査找,其优点是查找速度快,缺点是要求所要査找的数据必须是有序序列。 该算法的基本思想是将所要査找的序列的中间位置的数据与所要査找的元素进行比较,如果相等,则表示査找成功,否则将以该位置为基准将所要査找的序列分为左右两部分。
2. 检测中间位置的数据是否与要查找的数据key相等。 a: 相等,找到,打印下标,跳出循环。 b: key < arr[mid], 则 key 可能在 arr[mid] 的左半侧,继续到左半侧进行二分查找。 c: key > arr[mid], 则 key可能在 arr[mid] 的右半侧,继续到右半侧进行二分查找。
两种实现方法:循环与递归; 注意点: 1.两个整数相加溢出问题; 2.递归注意结束条件! #include<stdio.h>#define ARRAY_LENGTH(a) (sizeof(a)/sizeof(a[0]))//int32表示范围 [-2147483648, 2147483647]//二分查找intbinarySearch(inta[],intsize,intvalue){intstart=0,end=size;intm=0;while(start<end)...
2.⼆分查找 / 折半查找 前言 上一回我们了解了一维数组和二维数组的创建,初始化,和使用,这次我们拓展C语言的变长数组和查找的讲解。一、C99中的变⻓数组 在C99标准之前,C语⾔在创建数组的时候,数组⼤⼩的指定只能使⽤常量、常量表达式,或者如果我们初始化数据的话,可以省略数组⼤⼩。如:...