基础算法设计(番外)

前言

番外篇是老师有时候趁我们闲着(其实还在思考上一题或者编写着上一题)的时候,偷偷的写在黑板上,让我们想想解决的办法。因为大部分属于问答,所以一般不会有代码的实现。

求最小以及最大数字所需要的次数

题:有这样的1到n个数,需要找出这些数中最小的和最大的数,问:需要多少次才能找到?

这题按照正常的想法是,我将这1到n个数存到一个链表或者数组中,然后扫一遍这个数组,找出最大的值;之后再扫一遍这个数组找出最小的值,这样子所用的次数则为2n次。
但是既然这样问了,那就不太可能还用这样的方法。那怎么办呢?

假设1、2、3、4、5、6、......、n 这样一个数组,我们创建两个变量,一个max,一个min。
先在数组中拿出前两个1、2进行比较,大的将和max作比较,比max大则替换;小的将和min比较,比min小则替换。
这样子一共需要循环执行n/2次,每次需要进行的对比次数为3,则得到(3/2)n次。
以上就是关于减少该题比对次数的一个思路,目前算是比较少的次数思路了。

结语

该篇文章还会继续更新修改奥。
芥末是前端方向的,不过这些基础的东西,自己还是要懂得。这些文章更多的是在做自己的笔记同时分享出去,希望能帮到一些同学。
GitHub:https://github.com/Eugenehyj
另有篇关于RN的一些新手心得(待更新)
——“小白”的前端之路

你可能感兴趣的:(基础算法设计(番外))