递归:

#include <iostream>    
using namespace std;

bool binary(int *arr,int low,int high,int flag,int &temp)
{
    int middle;
    if(low>high)
        return false;
    middle=(low+high)/2;
    if(arr[middle]==flag) 
    {
        temp=middle;
        return true;
    } 
        
    if(arr[middle]<flag)   
         return binary(arr,middle+1,high,flag,temp);
    else                   
        return binary(arr,low,high-1,flag,temp);             
}

int main()
{
    while(1)
    {
        int arr[100];
        for(int i=0;i<10;i++)
            cin>>arr[i];
        int temp;
        int abc;
        cout<<"输入要查找的数:(限定了十个数)"<<endl;
        cin>>abc;
        if( binary(arr,0,9,abc,temp) )
        {
            if(arr[temp]==abc)
                cout<<"二分查找成功"<<endl;    
        }     
    }
    return 0;
}

非递归:

#include <iostream>    //二分法非递归实现。 
#include <algorithm>
using namespace std;

int arr[100];
int temp;

bool binary(int low,int high,int &ans)
{
    while(low<=high)
    {
        int middle=(low+high)/2;
        if(arr[middle]==temp)
        {
            ans=middle;
            return true;    
        }
        if(arr[middle]<temp)
            low=middle+1;
        if(arr[middle]>temp)
            high=middle-1;    
    }    
    return false;
}

int main()
{
    int n;
    cout<<"请输入n"<<endl;
    while(cin>>n)
    {
        cout<<"请输入数组中的数(按照顺序输入)"<<endl;
        for(int i=0;i<n;i++)
            cin>>arr[i];
        cout<<"请输入要查找的数据"<<endl;
        cin>>temp;                    
        int ans;
        if(binary(0,n-1,ans))
        {
            cout<<"要查找的数据在第"<<ans+1<<"个"<<endl; 
        }
        else 
            cout<<"没找到。"<<endl;
    }     
    return 0;
}

二分法(递归非递归)相关推荐

  1. java 建树源码_Java实现的二叉树常用操作【前序建树,前中后递归非递归遍历及层序遍历】...

    import java.util.ArrayDeque; import java.util.Queue; import java.util.Stack; //二叉树的建树,前中后 递归非递归遍历 层序 ...

  2. 快排递归非递归python_Python递归神经网络终极指南

    快排递归非递归python Recurrent neural networks are deep learning models that are typically used to solve ti ...

  3. c语言折半查找递归程序,C语言数据结构中二分查找递归非递归实现并分析

    C语言数据结构中二分查找递归非递归实现并分析 前言: 二分查找在有序数列的查找过程中算法复杂度低,并且效率很高.因此较为受我们追捧.其实二分查找算法,是一个很经典的算法.但是呢,又容易写错.因为总是考 ...

  4. 二叉树的深度(前序 中序 后序 递归非递归搜素)、广度、搜索 C++

    a b c 使用 1 2 3 表示 /* 描述:二叉树的深度(前序 中序 后序 递归非递归搜素).广度.搜索 作者:jz 日期:20140819 */ #include<stdio.h> ...

  5. 二叉树——中序遍历(递归/非递归)

    中序遍历,即遍历顺序为:左节点.根节点.右节点. 二叉树节点: public class Node {public Node left;public Node right;public int val ...

  6. 树的深度 递归非递归实现

    树的深度 递归非递归实现 package com.dugstudio.SwordToOffer;import java.util.LinkedList;/*** 树的深度递归和非递归算法*/ clas ...

  7. Java 二叉树后序遍历(递归/非递归)

    Java 二叉树后序遍历(递归/非递归) 简介: 遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次. 设L.D.R分 ...

  8. java建树_Java实现的二叉树常用操作【前序建树,前中后递归非递归遍历及层序遍历】...

    本文实例讲述了Java实现的二叉树常用操作.分享给大家供大家参考,具体如下: import java.util.ArrayDeque; import java.util.Queue; import j ...

  9. 图的遍历(递归+非递归)

    图遍历一共有四种,邻接矩阵的BFS与DFS,邻接表的BFS与DFS 还有BFS(BFS没有递归!)与DFS递归与非递归: 目录 DFS 手工 邻接矩阵 递归 非递归 邻接表 递归 非递归 BFS 手工 ...

  10. 二叉树的四种遍历方式——前序、中序、后序、层序遍历(递归+非递归实现)

    如果N代表根节点,L代表根节点的左子树,R代表根节点的右子树,则根据遍历根节点的先后次序有以下遍历方式: 1. NLR:前序遍历(Preorder Traversal 亦称先序遍历)--访问根结点-- ...

最新文章

  1. PostgreSQL创建数据库时报错:ERROR: source database template1 is being accessed by other users
  2. 正则匹配所有包括换行符
  3. 6,bash入门,for 循环, 编写最简单的脚本
  4. three.js加载3d模型_可加载5亿多边形,InsiteVR推Quest端BIM协作应用《Resolve》
  5. C/C++堆、栈及静态数据区详解
  6. 两个分布的特征映射_DDC:直接对齐特征空间进行领域自适应
  7. 更新fielddata为true_线程与更新UI,细谈原理
  8. 一日一技:在Ocelot网关中实现IdentityServer4密码模式(password)
  9. 一个大神的Android成长之路
  10. 好程序员分享使用JavaScript正则表达式如何去掉双引号
  11. [HDU 4842]--过河(dp+状态压缩)
  12. 【零基础学Java】—数组(五)
  13. mui赋值_mui input用法
  14. 循环肿瘤细胞(circulating tumor cells,CTCs)
  15. Delphi Hook K3
  16. JavaCore-ClassLoader
  17. Shell - 一行脚本统计分组 PV、UV
  18. 【背板子-后缀数组】BZOJ4199 BZOJ4650 LGP5108 CF504E
  19. 【实时数仓】DWD层需求分析及实现思路、idea环境搭建、实现DWD层处理用户行为日志的功能
  20. 经验分享:企业如何申请新浪企业官方微博认证

热门文章

  1. Flutter 混合开发实战问题记录(三)打包并上传flutter aar(包含三方plugin) 到maven...
  2. 快速生成树(RSTP)和传统生成树(STP)的区别(华为数通HCIE认证面试真题)...
  3. 《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一3.3.3 供应实验室...
  4. 使用XDebug和WinCacheGrind分析PHP性能
  5. C#编程总结(七)数据加密——附源码
  6. 熟悉linux的安全与优化
  7. [原创]关于打开新窗口和关闭老窗口的2个方法!
  8. 二叉树的遍历(前,中,后)
  9. CentOS7安装MySQL(完整版)
  10. spring boot 整合security