返回

C语言—实现二分查找(1)

发布时间:2023-05-08 09:03:04 133
—,顺序查找和二分查找
二:逻辑
三,代码实现和结果
四,知识点

—,顺序查找和二分查找

顺序查找:从第一个数字一个一个往后找,直到找到为止。

                ag:有一组有序数字:1,2,3,4,5,6,7,8,9,10;从这组数字中找出数字7。  若按顺序查找,第一个找到的数字为1,不等于7;继续找,第二个找到的数字为2,不等于7;以此类推,直到找到7停止,一共找了7次。按照这种方式查找,最坏的查找次数为n次。可见,这种查找方式效率低

二分查找:二分查找也称折半查找,它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列

ag:有一组有序数字:1,2,3,4,5,6,7,8,9,10;从这组数字中找出数字7。   按二分查找的方法,先找出中间的数(5),再与要找的数字k进行比较,若5k,查找范围变为1到4,然后再在查找范围里进行二分查找,直到找到为止,一共找了3次。可见,这种方法效率高

二:逻辑

C语言—实现二分查找(1)_数组

三:代码实现和结果

#include

//在一个数组中查找具体的某个数

int main()

{

int arr[]={1,2,3,4,5,6,7,8,9,10};

int k=7;

int sz=sizeof(arr)/sizeof(arr[0]);

int left=0; //左下标

int right=sz-1; //右下标

while(left<=right) //二分查找的次数>=1

{

int mid=(left+right)/2; //要注意执行下面语句后left,right都改变了

if(arr[mid]<k) //mid在k的左边

left=mid+1; //右下标不变,左下标=mid+1

else if(arr[mid]>k) mid在k的右边

right=mid-1; //左下标不变,右下标=mid-1

else //不能使用3个if语句

{

printf("找到了,下标是%d\n",mid);

break;

}

}

if(left>right)

printf("找不到\n");return 0;}

C语言—实现二分查找(1)_顺序查找_02

让k=17,结果:

C语言—实现二分查找(1)_顺序查找_03

四:知识点

1、​数组内元素的个数=数组的空间大小除以数组内一个元素的空间大小

2、sizeof()函数:计算变量、数组、类型的大小,单位是字节

     sizeof(arr):计算arr所占空间大小

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
QT画机器人 2023-05-08 06:02:28