程序员的数学 学习(指数爆炸)

通过思考一张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;
    }
}

指数增长的好处:

例子:指数增长与密码关系
加密长度越长,解密更困难

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

健身小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值