>>分享数据结构和算法相关的知识和技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 19633 个阅读者 刷新本主题
 * 贴子主题:  浅谈算法,一些感悟 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2020-03-15 21:43:15     消息  查看  搜索  好友  邮件  复制  引用

       最近看到好几个同学在学算法,看了一些书,另外跟一个算法较好的同学讨论了一下,若有所悟,作此文,以求各位大神指教;

              现在看到好多同学学算法,可是,事实上看起来,真正明白理解了算法是一种什么东西的极少,很多都是为了参加ACM而去学算法,并没有对算法有真正意义上的研究,甚至说,他们拿到了ACM的入场券的时候还不知道算法是什么,我感到很惋惜,从我个人的理解来说,算法其实一直都在我们身边,它就是一切可以通过逻辑解释的活动的一整个过程,这样说可能有点泛泛而谈了,总的来说,算法就是一个抽象的流程;而且在我看来,我们计算机领域内所谈的算法应该算是一种比较狭义上的算法,是一种基于计算机的算法,而此类算法,我觉得应该可以分两种类型:求解型和功能型,何为求解型呢?具体说来,就是当前各种算法大赛所要求的那种算法,是为了对一类题求解,至于功能型,就是软件设计方面所用到的算法,可以说是把一系列求解型算法整合在一起的算法,好了,说了这么多废话,该入正题了;

             会算法的人很多,可是算法也是有好有坏的,对一个程序来说,在得到同等结果的情况下,能尽量地减少时间损耗的就是好算法,但是,很多人为了追求完成任务,在时间损耗上不加以注意,使用了很多很粗糙的算法,比如说:要做一个循环十次的算法,有的人使用了循环算法,有的就使用分步的算法,把每一步都写出来,这只是一种很极端的情况,一般已经入门的人都不会这样做,后者就是一种很粗糙的算法,不仅执行效率低,而且写起来也吃力不讨好,相对后者来说,前者就是一种较美的算法,简洁、执行效率高、写起来也方便,这就是我对算法美的一种定义;

            至今为止,我也没写出多少美的算法,但是,可以说我一直在追求,我尝试通过不断地思考,学习去改善一个算法,一下就是在算法由粗糙到美这个过程的一些感悟:

          1、模糊算法模型,在写算法之前,应该先对整个算法有一个比较模糊的算法模型,应该知道这个算法是干嘛的,要怎么实现等等,不要一拿到题目就急着写算法,然后一边写一边思考,这种行为会把一个原来比较容易写的美的算法写的粗糙的;

          2、在模糊算法模型的基础上,一步步往模型中添加具体的算法,使整个模型清晰起来,如果只是做一些比较的小的算法的话,这种行为可能没太大必要,可是,对一些比较大的算法来说,或者一下子要把整个算法模型弄出来会很困难,而且很多细节地方会顾及不到,因此,在模糊算法模型的基础上,把整个完整的模型分解成很多小的算法,一些小的算法比较容易写得美;

         3、整合所有小算法,往模糊模型中添加完小算法之后,最重要的就是如何把这些小算法连接起来,这又涉及到一些连接的算法,而这些连接算法,有可能是相同的;

         4、很多人写完算法之后,就开始根据算法编程,可是,有的时候,我们没预料到的就是语言本身的一些问题,会导致我们的算法错误,因此,我们在写完算法,甚至在写的过程加入我们所需要注意的编程问题,以求最好的算法;

         5、有的时候,我们看看身边事物,没有什么特别,可是当我们从算法的角度出发,思考每种行为的算法的时候,我们可以领悟到更多的算法,同时,这些算法也可以在某些时候被应用到我们的项目之中;

         时间问题,这次就先写这么多吧,只是个人的一些感悟,可能不太正确,恳请各位赐教!



----------------------------
原文链接:https://blog.51cto.com/2379500/438639

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-03-15 21:43:15 重新编辑]
  Java面向对象编程-->对象的生命周期
  JavaWeb开发-->访问数据库(Ⅰ)
  JSP与Hibernate开发-->立即检索和延迟检索策略
  Java网络编程-->对象的序列化与反序列化
  精通Spring-->虚拟DOM和render()函数
  Vue3开发-->Vue Router路由管理器
  算法学习与收集:一些有用的算法网站和网页
  图像基本处理算法的简单实现
  深度学习之图片压缩算法
  java 通配符的应用范例, java 排序算法
  如何面对“算法”的困惑?
  用Java写算法:快速排序
  基于SQL的数据库算法研究
  有趣的位图排序算法
  字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序...
  RSA 非对称加密原理(小白也能看懂哦~)
  比较迭代和递归:人理解迭代 ,神理解递归
  谷歌面试算法题:两个排序数组的中位数
  小米面试算法题:搜索旋转排序数组
  Java数据结构与算法 - 栈和队列
  好书推荐:《小灰的算法之旅》
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。