zoukankan      html  css  js  c++  java
  • 数据结构、算法,个人理解

    也是在一次一个网友讨论过程中理解的,一直对数据结构和算法是程序的灵魂这句话不理解。

    数据结构和算法那么重要,我怎么感觉不到呢?怎么想这句话,都感觉是屁话,跟没说一样。

     出现这些问题原因有:

    一个是因为自己平时写的程序比较低端,加减乘除,if else switch就解决问题了,根本设计不到对数据结构和算法的探究。

    二个是数据结构和算法,被分开理解了。

    比如,我能理解数据结构对于程序的重要性,忘了是在哪个文件里面看的了,讲数据结构就是我们对现实生活中需要用程序解决的问题的抽象。

    一个班的学生,每个得了多少分,我可以用学号和分数,二维数组来表示。

    学生叫什么,性别,已婚与否,分数,数据的类型多了之后,可以用结构体来表示。

    我们要解决的问题的核心,就是这些从现实生活中提炼出来的抽象数据。数组、结构,可以参与进来,帮助我记录。

    可是这里面,跟算法有毛关系?

    顶多我查找一下,修改一下这些数据,感觉这些简单的操作称不上算法吧???

    算法是什么??到底,WTF

    我单独也运用过算法,比如在做12864液晶屏的时候,有个画点的算法,叫Bresenham。

    通过对这个算法的理解,也知道了,嗯,这个算法确实牛啊。

    画一条直线,我确定画了一个点,下个点画在哪里?愣头青的想法是,先得到起点和终点,通过得到这个直线的一次方程,来得到每个点的坐标(x,y)

    但是这个算法吊啊,具体实现忘了,好早之前的东西了额。不用复杂的运算,就可以得到基于某个点,下个点的坐标。

     哦,对还有学过的各种排序算法,什么bitmap算法,

    总觉得算法这个事儿不是一般能用得上的,都是给特定的场合用的。

    这么理解下来,这不是程序可以离开算法存在吗?

    算法和数据结构可以分开吗,谁说他们必须在一起的??!啊,课本上也没有太好的解释啊

    于是时间就这么一年一年过去了,我还不知道怎么肥四。

    直到有一天。。。

    那位网友讨论了一个颜色识别的问题。

    一段程序,颜色识别,是摄像机拍下一个图片,其中的某一点取出的8*3位的颜色值,每8位代表RGB里的一种。

    然后设置了标准色,与这一点的颜色值计算偏差,与哪种标准色的偏差最小,就认为是哪种颜色。

    按道理讲,我觉得这个程序还行啊,能用。

    但这位网友说到:

    1.首先rgb色是向量,用标量来直接计算,是错误的

    2.更严重的是,这个算法能跑的前提是,环境光没有任何变化,摄像头不更换,摄像头曝光率不变。

    所以环境光变化,这个算法就无能为力了,这套代码太烂!

    一语惊人,我一下悟到了算法是什么。

    算法就是,一种思路,根据这个思路写出来的代码。

    而且这个代码可以完成我们要解决的问题,通俗说就是跑得通,能得到我们想要的结果。

    这个代码写起来可以很神气、很优雅,像上边提到的Bresenham啊、快速排序、冒泡排序,

    也可以很简单、很乞丐,我们平时写的代码,虽然是什么if else switch,但是这也是一种解决问题的思路,而这个思路就是程序的算法!

    我恍然大悟,算法不是什么高深的东西,他就是我们用程序来描述、解决问题的思路!!!与实现这个算法,写的代码复杂与否、优雅与否没有半毛钱关系!!!

    当我们想出来一个思路来解决问题时,还要结合我们从现实中抽象出来的数据结构,才能得到完完整整的程序。

    比如点灯。

    数据结构:bit LED

    算法:通过修改寄存器,产生引脚的电平变化。

    (完)

    联我:shen5773384##163.com
  • 相关阅读:
    day1 生活大爆炸版石头剪刀布
    友谊赛
    再数17
    素数统计
    day1 LGTB玩THD
    day1 LGTB学分块
    day1 LGTB玩扫雷
    组合(1-m中选n个数)
    二分查找法,加递归,之前做了一个没加递归,结果就废了
    以前的一个程序,死循环,骚年,卡爆你的电脑吧
  • 原文地址:https://www.cnblogs.com/WMCH/p/7690011.html
Copyright © 2011-2022 走看看