何为算法?
算法,一个让我们听起来熟悉有陌生的词汇。很多刚毕业的大学生毕业的时候,在参加bat的面试,必不可少的两项,数据结构+算法。
那么什么是算法呢,今天就让我们跟着《算法导论》这本书,一起去翱翔算法的世界。
算法,顾名思义,就是计算的方法,这个计算是个很广义的词汇,可以指我们生活中买菜的计算,可以指我们程序中编程解法的计算,总之,算法是一个无所不在的东西。无论是我们的生活中还是工作中,都离不开算法。
生活中的算法:
相信大家小时候都做过这样的事情,就是妈妈给我们1块钱,这一块钱是我们一天的零花钱(可能大家都说一块钱能干个毛线,反正我小时候,1毛钱一个冰棍,1毛钱一袋透心凉饮料)。那么我这时候就要思考我这一块钱能干什么了,是买10个冰棍,还是买5个冰棍和5个透心凉。
此时,我的抉择就是一种算法的体现,就是在两种不同的方式下,达到一个身上钱全部花光的效果。
程序中的算法:
撸主最近在做安卓项目,下面就以我的安卓代码(其实也就是java的基础代码)作为示例,来让大家理解的算法。
第一种写法:
@Override public void onScrollChanged(BaseScrollView scrollView, int x, int y, int oldX, int oldY) { Log.e("滚动条状态",x+" "+y+" "+oldX+" "+oldY); <pre name="code" class="java"> int showOrHide = oldY > 0 ? View.VISIBLE:View.GONE;
if (scrollView == article_detail_scroll) { article_detail_btn_toTop.setVisibility(showOrHide); } }
第二种写法
@Override public void onScrollChanged(BaseScrollView scrollView, int x, int y, int oldX, int oldY) { Log.e("滚动条状态",x+" "+y+" "+oldX+" "+oldY); int showOrHide = oldY > 50 ? View.VISIBLE:View.GONE; if (scrollView == article_detail_scroll && article_detail_btn_toTop.getVisibility()!= showOrHide) { article_detail_btn_toTop.setVisibility(showOrHide); } }
此时,观察我们的两段代码有什么不同,很直观的。
你可以发现第二段代码比第一段多了一个判断条件。
既article_detail_btn_toTop.getVisibility()!= showOrHide
那么这一句话是干嘛的呢,他是用来判断我们要设定的值是否和我们原来的值相等
如果相等的话,还设置一次干嘛呢。反倒是浪费了系统运行的性能
可能读到这里,有的朋友就会问了,你这两段代码和算法又有什么关系呢?
那么说明你到现在还没理解算法的含义,代码的忧略性性,也是体现程序设计的好坏(既:算法)的一种方式
什么?我说了这么多,你还不明白算法是什么。
那好吧,请不要放弃治疗,我会继续治疗你的病症的(开个玩笑别介意)
那给你讲个最简单的例子,我现在需要两个正整数,让两数相加等于3,既,满足:a+b=3
a和b的值可以是多少
方案一:a =1 b=2;
方案二:a =2 b=1;
这两种方案的不同,也是一种算法的体现,只不过是np不完全的算法解答(np以后会提到)
相信到这里,大家应该知道什么是算法了把。
int showOrHide = oldY > 0 ? View.VISIBLE:View.GONE;