当前位置: 首页 > article >正文

初阶c语言(while循环二分法)

前言:

作业和那个不是一个级别的

内容:

3.在一个有序数组中查找具体的某个数字n。(讲解二分查找)

下标就是数组的下标,从0开始,有点难度,我头有点晕,就是大概知道了,写代码也写不出来的那种,等我晚上在写

先看下问题代码,这已经是我边看边写的代码了,还出错误了

#include <stdio.h>
int main()
{
	int arr[] = {1,2,3,4,5,6,7,8,9,10};
	int left = 0;
	int sz = sizeof(arr)/sizeof(arr[0]);
	int right = sz -1;
	
	int k = 7;
	

	
	while(left >= right)
	{
		int mid = (left + right)/2; 
		if(arr[mid] > k)
		{
		left = mid + 1;	
		}
		else if(arr[mid] < k)
		{
		right = mid -1;	
		}
		else
		{
		printf("找到了,下标为:%d\n", mid);
	}
	
	}
	
	return 0;
 } 

正确的值

#include <stdio.h>
int main()
{
    int arr[] = {1,2,3,4,5,6,7,8,9,10};
    int left = 0;
    int sz = sizeof(arr)/sizeof(arr[0]); //计算元素个数 
    int right = sz -1;                    //计算右边的下标 
    
    int k = 7;    //随机选择一个数,找出在数组是哪个下标 


    while(left <= right)     //循环遍历,找出下标 
    {
        int mid = (left + right)/2; //每次都需要重新计算,因为每次的left或right都会变 
        if(arr[mid] > k)     //如果下标的值大于实际值,则右边偏移 
        {
        right = mid - 1;    
        }
        else if(arr[mid] < k)  
        {
        left = mid +1;    
        }
        else
        {
        printf("找到了,下标为:%d\n", mid);
        break;                              //找到值,需要跳出循环,不然mid值不变,会一直循环 
        }
    
        
    }

    
    
    
    return 0;
 } 


http://www.kler.cn/a/543144.html

相关文章:

  • Idea 插件 Quickly-Code-Toolkit
  • 自动化办公|xlwings 数据类型和转换
  • 团结引擎 OpenHarmony 平台全面支持 UAAL,实现引擎能力嵌入原生应用
  • 常见的数据仓库有哪些?
  • 2.11学习记录
  • 如何在Kickstart自动化安装完成后ISO内拷贝文件到新系统或者执行命令
  • 桥接模式——C++实现
  • 深度整合DeepSeek:智能化搭建企业帮助中心
  • 关于uniapp使用pinia持久化配置兼容问题
  • WPF 设置宽度为 父容器 宽度的一半
  • 2.【线性代数】——矩阵消元
  • 笔记3——字符串和编码
  • 趣味魔法项目 LinuxPDF —— 在 PDF 中启动一个 Linux 操作系统
  • CSS 怎么实现样式隔离?
  • LVS作业
  • 使用Kafka Streams构建实时数据流处理系统:从基础到实践
  • 视频基础操作
  • 【进阶】JVM篇
  • MapboxGL加载离线字体
  • Android开发获取缓存,清理缓存工具类
  • 如何使用Java语言在Idea和Android中分别建立服务端和客户端实现局域网聊天
  • java后端开发day14--之前练习的总结和思考
  • 【通俗易懂说模型】一篇弄懂几个经典CNN图像模型(AlexNet、VGGNet、ResNet)
  • 基于全志T507的边缘计算机,推动光伏电站向智能运维转型
  • DVWA靶场篇(一)——命令执行、CSRF、文件包含
  • NO.12十六届蓝桥杯备战|关系操作符|操作符连用|浮点数比较|练习2道(C++)