c语言中折半查找法,折半查找函数C语言

c语言中折半查找法,折半查找函数C语言,C语言折半查找法介绍及使用示例

半搜索法也叫子搜索法。顾名思义,就是把数据分成两半,然后确定找到哪一半的键,然后重复上述步骤,直到找到目标键。下面这篇文章主要介绍C语言中半查找法的相关信息,有需要的朋友可以参考一下。

:

目录

1.二分搜索法简介1.1定义1.2基本原理1.3时间复杂度和空间复杂度1.4优缺点2。代码实现2.1代码设计2.2代码实现

1. 折半查找介绍

1.1 定义

半搜索,也称为二分搜索法,是一种在有序数组中查找特定元素的搜索算法。每次搜索范围缩小一半,效率高。如果数组是无序的,应该在搜索前对其进行排序。

1.2 基本原理

搜索过程从数组的中间元素开始。如果中间的元素正是要搜索的元素,则搜索过程结束。如果某个元素比中间的元素大或小,则在数组中比中间的元素大或小的那一半中进行搜索,并从中间的元素开始比较。如果数组在某一步是空的,说明找不到。这种搜索算法每次比较都将搜索范围缩小一半。

1.3 时间复杂度与空间复杂度

总共有n个元素,每次搜索的区间大小为n,n/2,n/4,…,n/2k2 K2K,一直到1,其中k为循环数。

由于n/2k2k2k四舍五入为1,即n/2k2k2k等于1,则可得k=log2n(是n以2为底的对数),因此时间复杂度可表示为O()=O(logn)。

二分搜索法只需要存储三个附加变量:最大值、最小值和中点,空间复杂度为常数O(1)。

1.4 优缺点

优点:比较次数少,搜索速度快,平均性能好。

缺点:需要检查的列表要求是有序列表,难以插入和删除。

2. 代码实现

2.1 代码设计

输入要查找的元素,我们输入了38;Left是有序数组最左边的0,是最小值,right是有序数组最右边的10,是最大值,mid是数组的1/2位置,即array[5];38大于array[5]=19,所以左等于原来的mid 1,即array[6]=26,右不变;新的mid是(左右)/2=(6 ^ 10)/2=8;38大于array[8]=36,所以左等于最后一个mid 1,即array[9]=38,右不变;新的mid是(左右)/2=(9 10)/2=9;/2=9;38等于数组[9],中间和左边重合,搜索成功,返回数组下标9。

2.2 代码实现

#包含stdio.h

#包含字符串. h

int binarySearch(int array[],int len,int target){

int left=0;

int right=len-1;

while(left=right){

int mid=(右左)/2;

if(array[mid]==target){

返回mid

} else if(array[mid] target){

左=中1;

} else if(array[mid] target){

右=中1;

}

}

return-1;

}

int main(void)

{

int array[]={2,3,4,5,15,19,26,27,36,38,45 };

int key=0,ret

Printf('请输入您需要查找的号码:');

scanf('%d ',键);

ret=binarySearch(array,sizeof(array)/sizeof(int),key);

if(ret 0)

Printf('查找失败\ n ');

其他

Printf('这个数字是数组的%d元素\n ',ret 1);

返回0;

}

运行结果:

请输入您需要查找的号码:38

这个数字是数组的第10个元素。

这篇关于C语言半查找的介绍和使用实例的文章到此为止。有关C语言半搜索的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: