c语言二分法查找一个数_算法简解-二分查找

68314eaf310d4fbe9d629eb3bc502bf3.png

读书不记录=没读,始终是我的信条·····最近因为要参加竞赛,发现自己真的差的很远,所以打算重新开始学习一遍算法及AI的相关数学知识,相信很多人都是闻数学,理工科色变,之前也是觉得上数理课太难了,真的很枯燥乏味,所以希望能通过自己的学习,把这些内容尽量简化的传递给一些朋友,大家一起加油鸭!

我第一遍学算法的时候主要是想搞懂一些基本概念,不然连文献都不知道在讲些什么,后来发现想要好好做研究,必须要扎实的掌握这些内容,so。开始

算法的重要性:算法是一个程序的灵魂·······我们现在能在能够这么方便的上网,检索问题,都是在各种算法优化的基础之上的,不管是计算机的硬件还是软件,都离不开算法的精妙设计。也是全世界工程师都在努力突破的问题。

算法的解释:主要是一组完成任务的指令,主要解决的问题就是提升速度,减少复杂度,尽可能高效的处理计算机程序中的复杂任务。

实现算法的语言:任何一种语言都能执行算法(针对没有基础的小白,可以选择自己喜欢的语言去做实验)。

算法难度:需要具备基本的代数知识,比如y=f(x)。

第一部分:二分查找;

比如说完猜数字游戏,对方给出1到100个数字,如果普通的猜法,就是从1数到100,总会才对,但是要猜100次,花费很多时间。二分法就是直接从50开始对半猜,这样只需要七次就能猜中了100→50→25→13→7→4→2→1(最多步,可能用不了这些。)不管是哪个数字,7次之内都能猜到,哈哈是不是很神奇。 可能这个例子不够特别突出二分查找的优势,但是换成大量数据的时候就能体现出来它的快速和简洁。 但前提是列表或者数据是按顺序排列的时候,这种方法会比较管用。

这里计算的一个重要公式是 :假如有n个元素的列表,用普通方法需要n步解决,但是二分方法最多需要

步。

比如有1024个元素时候,普通的查法最多需要1024次,但是

即查找10次就可以了 因为

log函数在算法设计中经常遇到,对数也就是幂运算的逆运算,所以这部分需要补课的胖友们随用随查就好。

今天是算法复习的第一天,也对以前没弄懂的一些东西理解深入了一点,希望后面自己能坚持下来,也希望刚入门的新手朋友能看明白这份简易的,教程。C语言代码或者Python的代码比较多,大家可以百度搜二分查找,用自己喜欢的代码尝试一下。 今天份的学习结束啦~

有一个python版本的连接可以参考:python实现二分查找 - 龙云飞谷 - 博客园

感谢博主的分享!

参考书:《算法图解》Aditya Bhargava著

C语言中,二分法查找是一种高效的查找算法。下面是一个示例程序: ```c #include <stdio.h> int binarySearch(int arr[], int left, int right, int key) { while (left <= right) { int mid = (left + right) / 2; if (arr[mid == key) { return mid; } else if (arr[mid < key) { left = mid + 1; } else { right = mid - 1; } } return -1; } int main() { int arr[] = {1, 9, 13, 23, 70, 73, 74, 77, 79, 80, 84, 89, 94, 99, 101}; int n; printf("请输入一个字:"); scanf("%d", &n); int index = binarySearch(arr, 0, sizeof(arr) / sizeof(arr<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [c程序设计习题参考(谭浩强三版)习题参考解答](https://download.csdn.net/download/wmxnzn/2656246)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [C语言经典100题——用二分法一个有序组中查找某个字](https://blog.csdn.net/yahid/article/details/123389973)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [详解【C语言】中的二分查找法和折半查找法(例题解答)](https://blog.csdn.net/m0_63325890/article/details/120993495)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值