C语言查找算法

/**

 查找(数组)

 1> 顺序查找 : 就是遍历数组每一个元素同该元素比较,但是问题是效率比较低

 2> 折半查找 : 条件是数组必须是有顺序的

 */

#include <stdio.h>

#define n 2

int main()

{

    // 折半查找

        /*

         思路:将该元素同中间元素比较,如果有则存在,否则,判断该元素在哪半部分,继续查找;

         */

    

    // 任意输入整数x,在有顺序的数组中查找是否有同x值相同的元素

    // 定义输入数据

    int x = -1;

    // 数组array

    int array[10] = {2, 10, 19, 22, 34, 36, 55, 67, 76, 88};

    scanf("%d", &x);

    // 定义开始元素下标start, 尾标end, 中间元素下标mid

    int start = 0;

    int end = 9;

    int mid = (start + end)/2;

    while (array[mid] != x && (end > start)){

          if (x < array[mid]) {         

            end = mid - 1;

        }else{

            

            start = mid + 1;

        }

        mid = (start + end)/2;

    }

    printf("%d\n", mid);

    return 0;

}

 

#include <stdio.h>

#pragma mark 折半查找 前提是该数组为顺序数组,同时折半查找还能用于插入有序数组中得位置,

#pragma mark 当然我们也可以用for循环查找元素,但是效率较低,当面对大量数据有序数据是,折半查找效率比较高

#pragma mark 如果我们面对一些无须的数据时,如果查找一组数据中是否含有某个数据时,可以先排序,然后用折半查找该元素

#pragma mark 折半查找

int zheban_array(int *array, int len, int num)

{

    int start = 0;

    int end = len-1;

    

    // 循环的条件

    while (start<=end) {

        int mid =(start+end)/2;

        if (array[mid]<num) {

            start = mid+1;

        }else if(array[mid]>num){

            end = mid-1;

        }else{

            return mid; // 如果是查找插入元素的话 mid+1就是要插入的位置(查找到存在的插入的元素)

        }

//        mid = (start+end)/2;

    }

    return -1; //如果查找的话,return start 就是要插入的位置(查找插入的不存在的元素)

}

 

#pragma mark 遍历数组

void  printf_array(int *array, int len){

    

    for (int i = 0; i<len; i++) {

        printf("%d\t", array[i]);

    }

    printf("\n");

}

int main()

{

    int array[] = {3, 5, 8, 23, 34, 65, 99};

    int len = sizeof(array)/sizeof(int);

    int n = zheban_array(array, len, 34);

    printf("%d\n", n);

    return 0;

}

 

转载于:https://www.cnblogs.com/-boy/p/4020803.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python在windows系统中安装pandas,numpy

进入python的安装目录的sripts文件夹下&#xff0c; 在该文件夹下进入命令行&#xff0c;在命令行输入pip install pandas 等待成功安装 转载自&#xff1a;https://www.cnblogs.com/xuqiulin/p/6623154.html

华为5G首席科学家童文 | 5G:万物连接平台 智能世界基石

华为5G首席科学家、华为Fellow童文博士来源&#xff1a;华为2019年是5G产业进入全面商用的关键一年&#xff0c;全球5G网络的部署已经启动。2018年6月&#xff0c;5G独立组网标准冻结&#xff0c;5G完成了第一阶段全功能eMBB标准化工作&#xff1b;12月6日, 中国三大运营商获得…

js处理日期的一些整理(js获取给定日期前一天的日期)

var date new Date();alert(date);//获取当前时间 alert(date.getFullYear());//获取当前年分 alert(date.getMonth());//获取月份&#xff08;获取当前月份要加1&#xff09; alert(date.getDate());//获取当前日期的几号 alert(date.getDay());//获取当前是星期几 alert(dat…

windows下配置tensorflow

我使用的是python3.6版&#xff0c;目前该版本可以使用tensorflow&#xff0c; 安装tensorflow&#xff0c;参考博客 &#xff1a;https://www.cnblogs.com/nosqlcoco/p/6923861.html 在pycharm下配置tensorflow&#xff0c;参考博客&#xff1a;https://www.cnblogs.com/yingc…

深度解密:软银孙正义如何成为美国硅谷最有权势之人

来源&#xff1a;腾讯科技摘要&#xff1a;据外媒报道&#xff0c;伊隆马斯克、杰夫贝索斯亦或是马克扎克伯格(&#xff0c;都不如日本亿万富翁孙正义那样&#xff0c;对AI驱动的未来有着最大胆的愿景。在孙正义看来&#xff0c;未来机器将控制着我们的生活方式。为了实现这个愿…

【笔记】Windows Phone 8开发笔记之API

Windows Phone 8 API一览 Windows Phone 7平台不支持Native语言的开发&#xff0c;这困扰了许多游戏和底层应用的开发者。Windows Phone 8 SDK的推出&#xff0c;改善了这个情况。下图就是Windows Phone 8 的API构成。 1. .NET API for Windows Phone Windows Phone 8支持的托管…

自动驾驶之路已走了多远?一文读懂研究现状

作者&#xff1a;Claudine Badue等编译&#xff1a;机器之心 Panda摘要&#xff1a;自动驾驶载具或将引爆人类的下一次出行方式革命&#xff0c;而我们目前又已经走到了哪一步&#xff1f;近日&#xff0c;巴西圣埃斯皮里图联邦大学的研究者在 arXiv 上发布了一篇自动驾驶汽车研…

OpenCV的基本模块介绍

####文件结构 在调用opencv时需要用到的头文件分布&#xff08;默认安装情况下&#xff0c;同时下面都是基于2.4.x版本&#xff09;&#xff1a; 对windows系统来说&#xff0c;一般在OPENCV_DIR/build/include/文件夹下&#xff0c;所以在VS中调用时需要配置附加库目录&#…

真的超越了波士顿动力!深度强化学习打造的 ANYmal 登上 Science 子刊

编译&#xff1a;机器之心深度强化学习开发出的机器人模型通常很难应用到真实环境中&#xff0c;因此机器人开发中鲜少使用该技术。然而这已经板上钉钉了吗&#xff1f;在两天前引发人工智能界关注的 ANYmal 机器人中&#xff0c;其机动性和适应性看起来丝毫不逊色于波士顿动力…

让MySql支持Emoji表情(MySQL中4字节utf8字符保存方法)

手机端插入Emoji表情&#xff0c;保存到数据库时报错&#xff1a; Caused by: java.sql.SQLException: Incorrect string value: \xF0\x9F\x98\x84 for column review at row 1at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)at com.mysql.jdbc.MysqlIO.ch…

如何查看OpenCV源码

我们可以查看OpenCV这个库的源代码&#xff0c; 具体操作方法参考&#xff1a; http://blog.csdn.net/cwt19902010/article/details/70227193 https://blog.csdn.net/kaspar1992/article/details/53326431 - 我们在Microsoft Visual Studio中通过 “右键 ->查看定义” 只…

实例化Model的三种方式

转载于:https://www.cnblogs.com/toward-the-sun/p/4030010.html

安装Opencv3

要添加系统变量。高级系统设计->环境变量->path&#xff0c; 我的为D:\OpenCV341\OpencV_vs2013_x64\install\x64\vc12\bin; 注意install文件夹是cmake编译生成的工程文件夹中的。 参考博客&#xff1a;http://blog.csdn.net/jinian2614/article/details/78176704?lo…

人形机器人,穷途末路还是光明未来?

来源&#xff1a;任赜宇的知乎专栏摘要&#xff1a;今年 11 月初在北京召开的 IEEE/RAS Humanoids 会议中&#xff0c;作者去听了这样一个 Workshop: Humanoid Robotics: Dead-end or Bright Future? (人形机器人&#xff0c;末路还是光明的未来&#xff1f;) 再结合当前的形势…

进入opencv内部函数调试

主要问题参考&#xff1a;http://blog.csdn.net/daven172/article/details/45769129 这篇博客。 我们进入opencv内部函数进行调试&#xff0c;主要是设置断点&#xff0c;然后按下F11键&#xff0c;VS2013编译器会自动跳转到opencv内部的函数。 如果我们进入内部的函数&#xf…

javascript高级程序设计-Array迭代及归并

迭代方法 every() 如果该函数对每一项都返回true&#xff0c;则返回true&#xff0c;否则返回false。 var numbers [1,2,3,4,3,2,1]; var everyResult numbers.every(function(item,index,array){return (item > 2); }); alert(everyResult); //result为false some() 如…

全球自动驾驶政策概况及特征研究

来源&#xff1a;《中国信息通信研究院CAICT》近年来&#xff0c;美、欧、日等发达国家和地区将自动驾驶技术作为交通未来发展的重要方向&#xff0c;在技术研发、道路测试、标准法规、政策等方面为自动驾驶及其载体——智能网联汽车的发展提供政策支持&#xff0c;加快自动驾驶…

Android开发记录(转)

一、Android模拟器相关 1. Android模拟器安装 Market 模拟器默认没有安装 Market&#xff0c;看到网上有较为复杂的安装方法&#xff0c;也有1个简单的&#xff0c;试了简单的&#xff0c;在 Android2.2 模拟器下试过是OK的&#xff0c;简单的方法如下&#xff1a;1) 下载2个文…

高斯赛德尔迭代法

我们在求解矩阵时&#xff0c;有很多种方法&#xff0c;其中当矩阵是大型稀疏矩阵&#xff08;矩阵中有大部分元素都为0&#xff09;时&#xff0c;我们可以用迭代法求解。 关于该方法的思想和定义&#xff0c;请参考如下博客&#xff1a; http://www.doc88.com/p-6953977164…

中心化,去中心化?关乎互联网未来命运的重要选

作者&#xff1a;刘锋 计算机博士 《互联网进化论》作者前言&#xff1a;不知不觉互联网的未来发展出现了分歧&#xff0c;当Facebook、谷歌等互联网巨头越来越强大的时候&#xff0c;反弹的声音也越来越大&#xff0c;人类社会的有识之士希望解决这个问题&#xff0c;由此导致…