《算法导论》----------什么是算法?

来源:互联网 发布:从淘宝进货在实体店卖 编辑:程序博客网 时间:2024/05/21 17:04

何为算法?

算法,一个让我们听起来熟悉有陌生的词汇。很多刚毕业的大学生毕业的时候,在参加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;
0 1