/**
* 折半查找又称二分查找,算法复杂度为O(log(n)),但缺点是要求
* 待查表为有序表,此算法充分利用了数组的有序性,采用分治策略
* 找出待查元素在数组中的位置,若数组中不存在该元素,则返回-1
*/
#include <stdio.h>
int binary_search(int array[], int n, int data)
{
int low = 0, high = n - 1, mid;
while(high >= low)
{
mid = (low + high) / 2;
if(array[mid] == data)
return mid;
else if(array[mid] > data)
high = mid - 1;
else
low = mid + 1;
}
return -1;
}
main()
{
int array[] = {1, 5, 30, 41, 100, 101};
printf("%d\n", binary_search(array, 6, 101));
printf("%d\n", binary_search(array, 6, 2));
}
运行结果:
5
-1
分享到:
相关推荐
在ACM(国际大学生程序设计竞赛)中,折半查找法(又称二分查找法)是一种常见的算法,它被广泛应用于处理有序数据。折半查找法利用了数据的有序性,通过每次比较中间元素来缩小查找范围,从而提高查找效率。下面...
递归折半查找法基本的程序思想,初学者可以参考一下。
折半查找法
查找问题(顺序查找法, 折半查找法,)基本思想:一列数放在数组a(1)---a(n)中,待查找的数放在x 中,把x与a数组中的元素从头到尾一一进行比较查找。用变量p表示a数组元素下标,p初值为1,使x与a(p)比较,如果x不等于a...
2.有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。以15个数用赋初值的方法在程序中给出。要找的数用scanf函数输入。
西工大C 毕设论文:折半查找法演示器,里面包括了一个毕业论文的模板,本程序演示的功能是折半查找法,测试时请输入你想要查找数据的数据表列的数据个数(1--50),还需要输入你要在其中查找数据的数据表列(%d个数据...
折半查找法,也称为二分查找法,是一种高效的搜索算法,尤其适用于已排序的数组或列表。本教程将深入探讨这个主题,帮助数据结构初学者理解和掌握这种强大的查找技术。 **一、二分查找法的基本概念** 二分查找法是...
实例190 - 泛型化的折半查找法,就是关于如何利用泛型优化传统折半查找算法的一个实践示例。折半查找,也称为二分查找,是一种在有序数组中查找特定元素的搜索算法,其效率比线性查找高得多。 在Java中,传统的折半...
改进的选择排序法 和 折半查找法 的C代码, 已测试.
public int searchNumber(double num, boolean updown) {// 折半查找算法 int left = 0, right = Array.length - 1, middle = -1; while (left ) { middle = (left + right) / 2; if (num == Array[middle]) ...
折半查找法
【标题】:“运用非递归方式设计折半查找法的程序” 折半查找,也称为二分查找,是一种在有序数组中寻找特定元素的搜索算法。它的基本思想是每次将待搜索区域减半,直到找到目标元素或者确定目标元素不存在。这种...
折半查找法,又称二分查找法,是一种在有序数组中高效寻找目标元素的搜索算法。这种方法的关键在于每次查找都将待查找的区间减半,从而快速定位目标元素。以下是关于折半查找法的详细说明: 1. **基本原理**: ...
% 折半查找法,x是按升序排列的一维数组,a是待查找的数字 n = length(x); sign = 0; % 用sign标记是否查找成功,赋初值为假,当查找成功时其值为真 top = 1; bott = n; % 当a比x的最小值小或比x的最大值大时,返回找不...
本主题将深入探讨C语言中的折半查找法,这是一种在有序数组中查找特定元素的有效算法,尤其适用于大型数据集。 折半查找,也称为二分查找,其基本原理是利用数组的有序性,通过每次将查找范围减半来快速定位目标值...
C语言——折半查找法代码
折半查找法,又称二分查找法,是一种在有序数组中高效寻找目标值的算法。其核心思想是利用数组的有序性,通过不断缩小搜索范围,以递归或迭代的方式快速定位目标值。该方法特别适合于大规模数据的查找,因为它的平均...
数据结构折半查找,用于C语言版的数据结构。
有15个数折半查找法
5-7折半查找法.c