09【C语言 & 趣味算法】再识:折半查找(二分查找):基本思想、程序流程图及完整代码、附:顺序查找

简介: 09【C语言 & 趣味算法】再识:折半查找(二分查找):基本思想、程序流程图及完整代码、附:顺序查找

一、Review



08【C语言&趣味算法】再识:冒泡排序(问题分析、算法设计与分析、程序流程图以及完整代码)

07【c语言&趣味算法】最佳存款方案(采用从后往前递推解决)

06【c语言&趣味算法】牛顿迭代法求方程根(可回看)

05【C语言&趣味算法】经典:兔子产子问题(即:Fibonacci数列)

04【C语言&趣味算法】“抓交通肇事犯"问题。算法改进:设置“标识变量”,有效减少循环次数。

03【C语言&趣味算法】(值得品味的一道题)打鱼还是晒网?结构体的简单应用。函数的应用。判断闰年的应用。求指定日期距1990年1月1日的天数。

02【C语言&趣味算法】借书方案问题:小明有5本新书,要借给A、B、C三位小朋友,若每人每次只能借1本,则可以有多少种不同的借法?

01【C语言&趣味算法】百钱百鸡问题(问题简单,非初学者请忽略叭)。请注意算法的设计(程序的框架),程序流程图的绘制,算法的优化。


二、New Problem: Find in half(折半查找)



2.1 Description of the problem(问题描述)


众所周知,折半查找,又叫做"二分查找”。在此之前,我好像记录过类似的,可是呢,没有找到,再记录一下吧!

89dbc9762bf14b50a9b0d3197a429113.jpg


2.2Analysis of the problem(问题分析)


关键词:分治算法;

096c96209c114010a0a75b800a0560c2.jpg


2.3 Algorithm design(算法设计)


关键词:有序,数组。

f9d70908ab49459ea39161f2a16e793c.jpg


2.4 Procedure flow chart(程序流程图),Full code and output (完整code及输出)


先来看程序流程图:


228421763d8f41f89b31dc259424db73.jpg

完整code如下:


// 趣味09:折半查找(二分查找) 
#include <stdio.h>
#define N 10
int main()
{ 
int i,a[N]={-3,4,7,9,13,45,67,89,100,180 },low=0,high=N-1,mid,k=-1,m;
    printf("a数组中的数据如下:\n");
    for(i=0;i<N;i++) 
  printf("%d ", a[i]);          /*输出数组中原数据序列*/
    printf("\n");
    printf("Enter m: "); 
  scanf("%d",&m);           /*由键盘输入要查找的整数值*/
    while(low<=high)          /*继续查找的控制条件*/
    { 
  mid=(low+high)/2;         /*确定指针mid的位置*/
      if(m<a[mid])
        high=mid-1;
      else 
      if(m>a[mid])
            low=mid+1;
        else 
      {
        k=mid;
        break;        /*一旦找到所要查找的元素便跳出环*/
      } 
    }
if(k>=0) 
    printf("m=%d,index=%d\n",m,k);
else 
    printf("Not be found!\n");
}

测试如下:

47472bb8a72c4f3eb2cd703f019cf8e3.jpg


注意索引从0开始哈~


b03d4b894ee346488183dbe3156d9768.jpg


2.5附: Additional knowledge points (知识点补充) : continue、break


04ea2b8e1e174c07836c208ddc1f7570.jpg

2.6 Question expansion(问题拓展): Sequential search(顺序查找)bc3d6f1ea9dd4d549d721d784b7f06ab.jpg

目录
打赏
0
0
0
0
5
分享
相关文章
C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合
本文深入解析了C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合,旨在帮助读者掌握这一高效的数据处理方法。
91 1
近端策略优化(PPO)算法的理论基础与PyTorch代码详解
近端策略优化(PPO)是深度强化学习中高效的策略优化方法,广泛应用于大语言模型的RLHF训练。PPO通过引入策略更新约束机制,平衡了更新幅度,提升了训练稳定性。其核心思想是在优势演员-评论家方法的基础上,采用裁剪和非裁剪项组成的替代目标函数,限制策略比率在[1-ϵ, 1+ϵ]区间内,防止过大的策略更新。本文详细探讨了PPO的基本原理、损失函数设计及PyTorch实现流程,提供了完整的代码示例。
108 10
近端策略优化(PPO)算法的理论基础与PyTorch代码详解
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
C语言在实现高效算法方面的特点与优势,包括高效性、灵活性、可移植性和底层访问能力
本文探讨了C语言在实现高效算法方面的特点与优势,包括高效性、灵活性、可移植性和底层访问能力。文章还分析了数据结构的选择与优化、算法设计的优化策略、内存管理和代码优化技巧,并通过实际案例展示了C语言在排序和图遍历算法中的高效实现。
73 2
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
77 1
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
99 1
C语言决赛代码
#include #include #include struct book { int num; char bname[50]; char wname[20]; char press[50]; char sort[50]; int time; float p...
862 0
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
62 23
|
1月前
|
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
本文档介绍了如何编写两个子函数,分别求任意两个整数的最大公约数和最小公倍数。内容涵盖循环控制与跳转语句的使用、最大公约数的求法(包括辗转相除法和更相减损术),以及基于最大公约数求最小公倍数的方法。通过示例代码和测试说明,帮助读者理解和实现相关算法。最终提供了完整的通关代码及测试结果,确保编程任务的成功完成。
67 15
|
1月前
|
【C语言程序设计——函数】亲密数判定(头歌实践教学平台习题)【合集】
本文介绍了通过编程实现打印3000以内的全部亲密数的任务。主要内容包括: 1. **任务描述**:实现函数打印3000以内的全部亲密数。 2. **相关知识**: - 循环控制和跳转语句(for、while循环,break、continue语句)的使用。 - 亲密数的概念及历史背景。 - 判断亲密数的方法:计算数A的因子和存于B,再计算B的因子和存于sum,最后比较sum与A是否相等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台对代码进行测试,预期输出如220和284是一组亲密数。 5. **通关代码**:提供了完整的C语言代码实现
60 24
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等