程序员的数学 学习(指数爆炸)
通过思考一张1mm的纸(假设可以无限次折叠),每次折叠厚度翻一倍,折多少次能够有地月距离39万KM那么厚,作者引出指数的概念。
凭直觉也得千儿八百次,答案是39次,的确很震撼。
把这种数字急剧增长的情况称为“指数爆炸”,折纸时的厚度 里面n就是折纸次数。之前接触到的汉诺塔问题的解析式和斐波那契数列都属于指数的范畴。
数学中的指数函数是这样
引出的程序问题:
如在测试中有4个按钮,分别会有两种状态,就会出现2^4 种状态,如果是10个呢?就会有2^10次方种,这就出现了测试难题。
如何解决:
1、暴力求解(穷举)
2、转换(像七桥的故事 图论)
3、没有方法,就分类近似。
4、概率求解
例如:有个数组中有几千个个数字那如何找到1010这个数字,这类似于指数爆炸的反向过程,不能一个一个去比较吧,因此出现了二分查找法
package cn.yccj.basics;public class ResourceSearch
{public static void main(String[] args) {int resource[] = {3,5,11,17,21,23,28,30,32,50,64,78,81,95,101};System.out.println(binSearch(resource, 0, resource.length - 1, 81));System.out.println(binSearch(resource, 81));}// 二分查找递归实现public static int binSearch(int resource[],int start,int end,int key){int mid = (end-start)/2+start;if(resource[mid]==key){return mid;}if(start>end){return -1;}else if(resource[mid]<key){return binSearch(resource, mid + 1, end, key);}else if(resource[mid]>key){return binSearch(resource, start, mid-1, key);}return -1;}// 二分查找普通循环实现public static int binSearch(int resource[],int key){int mid = resource.length/2;if(key==resource[mid]){return mid;}int start = 0;int end = resource.length-1;while (start<=end){mid =( end - start)/2+start;if(resource[mid]<key){start=mid+1;}else if(resource[mid]>key){end = mid-1;}else {return mid;}}return -1;}
}
指数增长的好处:
例子:指数增长与密码关系
加密长度越长,解密更困难
程序员的数学 学习(指数爆炸)相关推荐
- 《程序员的数学:7指数爆炸》
本文属于<程序员的数学>读书笔记系列.本文内容相对比较容易. 什么是指数爆炸? 通过思考一张1mm的纸(假设可以无限次折叠),每次折叠厚度翻一倍,折多少次能够有地月距离39万KM那么厚,作 ...
- 程序人生(二)在这个信息爆炸的时代程序员怎么去学习
目录 众所周知的坑,可以不学 一.操作系统底层源码 二.数学知识 三.编译原理 四.喜欢把学习的知识强加于业务 五.不要向往大公司 六.不要面向面试学习 知道不学什么,才有更多时间学习需要的知识 一. ...
- 【程序员的数学基础课-黄申】学习笔记 1-10
博客内容来自--极客学园>程序员的数学基础课 现在数学在程序员的日常里重要性逐渐显现,但作者不建议去啃大学课本,可以先广度再深度. 作者每节课都用心总结截图如下,建议购买课程更新学习 01讲二进 ...
- 《程序员的数学》三部曲
如果数学不好,是否可以成为一名程序员呢?答案是肯定的.本书最适合:数学糟糕但又想学习编程的你. 没有晦涩的公式,只有好玩的数学题. 帮你掌握编程所需的"数学思维". 编程的基础是计 ...
- 程序员的数学(一本为程序员朋友们写的数学书)(china-pub首发)
<程序员的数学> 基本信息 作者: (日)结城浩 [作译者介绍] 译者: 管杰 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115293688 上架时间:2012 ...
- 《程序员的数学》各个章节的总结
各种总结 第一章,我们对0进行了思考.0明确表现了"无即是有" .换言之,就是不对"无"进行特别处理 引入0以后,更容易简化规则,如果找出具有一致性的简 单规则 ...
- 程序员的数学---数学思维的锻炼
第三章: 余数–周期性和分组 星期问题 来看一道简单的题目:今天星期日,那么 100 天以后星期几? 这个问题最笨的方法就是数数了.不过那样也是颇为费事,从余数方向考虑:一个礼拜 7 天,100 天等 ...
- 程序员的数学——傅里叶变换
作为音视频开发程序员,编解码的原理是必须了解的.而编解码原理中,傅里叶变换(Fourier Transform)是一个必学的数学知识.当然,网上可以搜索到的讲傅里叶变换的文章已经非常多,专门的书籍也有 ...
- 《程序员的数学1》读书笔记整理
<程序员的数学> 前言 0的故事--无即是有 按位计数法 不适用按位计数法的罗马数字 指数法则 0所起的作用 人类的极限和构造的发现 逻辑--真与假的二元世界 乘车费用问题--兼顾完整性和 ...
最新文章
- 你真的会玩SQL吗?EXISTS和IN之间的区别
- combobox DataGridView
- 如何在 ASP.Net Core 使用 分布式缓存
- js中this的指向问题
- linux下怎么识别fioa卡,2020年新版电子警察信号灯设计、施工方案.docx
- tomcat默认密码,admin,manager密码需要自己设置,tomcat-users.xml
- Python在SQLite数据库中动态创建数据表的思路与实现
- 一步一步搭建oracle 11gR2 rac+dg之环境准备(二)【转】
- 盘阵多路径学习(转)
- paip.提升安全性--------用户密码控件方案总结
- IIS7安装URLReWrite的妙用
- 通达信插件模板 Purebasic版
- android 对话框Dialog拦截activity事件通知
- 机械师笔记本电脑使用小常识
- WEB在线客服系统(websocket+Golang)
- 【整理】图片不能直接拖到3dsMAX和Photoshop中了
- Cz工具集使用介绍 - 规范Git提交说明
- 汇编语言的七种寻址方式
- 算法设计与分析: 2-7 士兵站队问题
- NAO机器人——编程基础