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

相关文章
|
1月前
|
自然语言处理 算法 搜索推荐
C语言中谈论算法
C语言中谈论算法
10 0
C语言中谈论算法
|
1月前
|
算法 安全 C语言
使用C语言实现DES算法代码
使用C语言实现DES算法代码
|
1月前
|
Java C语言
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
28 0
|
1月前
|
自然语言处理 算法 搜索推荐
C语言用伪代码表示算法
C语言用伪代码表示算法
29 0
|
23天前
|
算法 C语言
【算法与数据结构】 C语言实现单链表队列详解2
【算法与数据结构】 C语言实现单链表队列详解
|
23天前
|
存储 算法 C语言
【算法与数据结构】 C语言实现单链表队列详解1
【算法与数据结构】 C语言实现单链表队列详解
|
23天前
|
编译器 程序员 C语言
【C语言】变长数组,二分查找和数组之间自动替换的实现
【C语言】变长数组,二分查找和数组之间自动替换的实现
|
29天前
|
算法 C语言
C语言之二分查找
C语言之二分查找
|
1月前
|
存储 机器学习/深度学习 算法
C语言代码实现数据结构与算法
以上代码中,哈希表使用链表解决哈希冲突,每个链表节点包含一个键值对。hash函数用于计算键值对应的哈希值,insert函数用于向哈希表中插入一个键值对,若当前位置为空,则直接插入;否则,将新节点插入到链表末尾。search函数用于在哈希表中查找指定键值的值,若存在则返回其值,否则返回-1。
32 1
|
1月前
|
存储 算法 程序员
c语言中的流程图
c语言中的流程图
9 0