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

相关文章
|
5月前
|
存储 算法 搜索推荐
软考算法破壁战:从二分查找到堆排序,九大排序核心速通指南
专攻软考高频算法,深度解析二分查找、堆排序、快速排序核心技巧,对比九大排序算法,配套动画与真题,7天掌握45%分值模块。
263 1
软考算法破壁战:从二分查找到堆排序,九大排序核心速通指南
|
5月前
|
存储 算法 生物认证
基于Zhang-Suen算法的图像细化处理FPGA实现,包含testbench和matlab验证程序
本项目基于Zhang-Suen算法实现图像细化处理,支持FPGA与MATLAB双平台验证。通过对比,FPGA细化效果与MATLAB一致,可有效减少图像数据量,便于后续识别与矢量化处理。算法适用于字符识别、指纹识别等领域,配套完整仿真代码及操作说明。
|
存储 安全 数据管理
C语言之考勤模拟系统平台(千行代码)
C语言之考勤模拟系统平台(千行代码)
267 4
|
搜索推荐 C语言
【排序算法】快速排序升级版--三路快排详解 + 实现(c语言)
本文介绍了快速排序的升级版——三路快排。传统快速排序在处理大量相同元素时效率较低,而三路快排通过将数组分为三部分(小于、等于、大于基准值)来优化这一问题。文章详细讲解了三路快排的实现步骤,并提供了完整的代码示例。
646 4
|
8月前
|
PyTorch 算法框架/工具 C++
人工智能算法python程序运行环境安装步骤整理
本教程详细介绍Python与AI开发环境的配置步骤,涵盖软件下载、VS2017安装、Anaconda配置、PyCharm设置及组件安装等内容,适用于Windows系统,助你快速搭建开发环境。
|
12月前
|
算法 Java 索引
算法系列之搜素算法-二分查找
二分查找是一种在`有序`数组中查找特定元素的算法。它的基本思想是通过将数组分成两半,逐步缩小查找范围,直到找到目标元素或确定目标元素不存在。
213 9
算法系列之搜素算法-二分查找
|
算法 索引
【算法】——二分查找合集
二分查找基础模版和进阶模版,查找元素位置,搜索插入位置,x的平方根,山脉数组的峰顶索引,寻找峰值,点名
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
529 1