数据结构与算法分析(1) -- 数学基本知识

平时工作中写了太多的业务代码,数据结构与算法这块都差不多还给老师了。。。

但意识到想要更深入的进行程序设计,数据结构和算法可以说是灵魂,在一些情况下一个优秀的算法可以将性能提升几个数量级,举个简单的例子:

问题:从n个数中找出第k个最大值。

这个问题一种解法就是将这n个数读取到一个数组中,再通过某种简单的排序算法进行排序,最后返回位置为k上的元素;

或者稍微更好一点解法,就是先把前k个元素读入数组并排序(递减),接着将剩余的元素逐个读取,当新元素被读到时,如果它小于数组中的第k个元素,则忽略。否则就将其放入到数组正确的位置上,同时将数组中的一个元素移除。当算法结束时,将第k个位置上的元素作为结果返回。

以上2中方法,不可否认都可以计算出结果,但是否都是最优的呢?假如有1亿条数据,需要找出第5千万大得数据,这2中算法是否又适用呢?可以想象,以上2种算法都可以计算出结果,只是时间问题,在合理的时间内都无法结束。

要解决上面例子中的问题,短时间内计算出结果就需要涉及到数据结构中的一些相关的算法。我自己也是重新捡起了这块,于是决定写些东西记录下来,一起交流学习!首先从数据结构中的一些基本数学知识开始。

1、指数

 

2、对数

 

3、级数

 

 4、证明的方法

数学归纳法

    1. 证明基准情形,确定定理对于某些小的值是正确的;
    2. 进行归纳假设,假设定理对于某个值为n是正确的;
    3. 证明定理在n+1的情况下也是正确的;

 

 

反例证明法

 

 

以上截图内容来自《数据结构与算法分析》一书。

转载于:https://www.cnblogs.com/dehong/p/7536515.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值