V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
sgissb1
V2EX  ›  奇思妙想

大家是怎么理解“算法”和“代码逻辑”两个词的

  •  
  •   sgissb1 · 2019-06-20 16:51:07 +08:00 · 4780 次点击
    这是一个创建于 2017 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天和一好基友在讨论一个代码里面的逻辑怎么写的问题,主要是为了修改两个队列中数据处理先后次序的问题。

    给定一个 A 队列和 B 队列,在需求中每次只允许取一个数据来处理,并且还要求是这两个队列里的。
    A 和 B 交错着取(这次取 A,那么下次就要取 B )。
    当我们在日常吹牛皮的很嗨时,边上就有哥们突然提到算法这个词,我们当时都一下子懵逼了。

    因为在我们的眼里,只是对两个 list 取数据先后的问题,仅仅是一种代码逻辑问题,实际上对最终产出影响很小。我们眼中的算法要么是具备很强的数学理论基础,要么是解决某种特定问题的总称。

    不晓得大家怎么看这两个词。码代码时间越久,总感觉这些定义很模糊了,有点事实而非。
    18 条回复    2019-06-21 17:03:14 +08:00
    kyuuseiryuu
        1
    kyuuseiryuu  
       2019-06-20 17:00:56 +08:00   ❤️ 1
    代码 + 逻辑 = 算法
    smile561607154
        2
    smile561607154  
       2019-06-20 17:04:04 +08:00
    同楼主,我从来把我写的东西称为算法。
    smile561607154
        3
    smile561607154  
       2019-06-20 17:05:46 +08:00
    同楼主,我从来不敢把我写的东西称为算法。
    agagega
        4
    agagega  
       2019-06-20 17:06:39 +08:00 via iPhone
    然而这就是算法。
    sikariba
        5
    sikariba  
       2019-06-20 17:11:12 +08:00
    这就是算法+1
    mcfog
        6
    mcfog  
       2019-06-20 17:15:34 +08:00
    算法是用于解决问题的一系列指令描述。他说的没问题,并不是只有教科书上的或 leetcode 里的那些才叫算法。解决“交互消费两个不同队列”这个特定问题的方法,当然是算法

    an algorithm is a set of instructions, typically to solve a class of problems or perform a computation. -- Wiki

    至于“代码逻辑”,我不知道什么叫代码逻辑,甚至找不到这个词对应的英文是什么,不建议使用这个模糊不清的词
    whwq2012
        7
    whwq2012  
       2019-06-20 17:17:04 +08:00 via Android
    算法的五个特性:有穷性,确定性,输入,输出,可行性。
    简而言之,算法就是能解决问题的有穷步骤。
    jmc891205
        8
    jmc891205  
       2019-06-20 17:18:55 +08:00
    算法说白了就是一个可以精确描述的解决某种问题的方法
    生活中处处都是算法
    baicheng10
        9
    baicheng10  
       2019-06-20 17:20:56 +08:00
    这是算法。
    但我其实和楼主的看法比较类似,对词义上有狭义的偏见,心态吧,像上面说的,“不敢把自己写的东西称为算法”,有点像谦称一样。
    airfling
        10
    airfling  
       2019-06-20 17:27:59 +08:00
    能解决问题的就是算法
    bzi
        11
    bzi  
       2019-06-20 17:42:43 +08:00
    也算是算法,只不过因为简单而不好意思对外宣称是算法吧
    zagfai
        12
    zagfai  
       2019-06-20 17:44:38 +08:00   ❤️ 1
    code 是实实在在的,algo 是虚的
    Norie
        13
    Norie  
       2019-06-20 18:24:15 +08:00 via Android
    算法不就是计算的方法吗?
    akira
        14
    akira  
       2019-06-20 18:58:10 +08:00
    一般说的算法 应该是指 搜索 查询 遍历 排序 的算法

    但是 广义上的算法,你这个确实也是能叫算法
    pkookp8
        15
    pkookp8  
       2019-06-20 19:15:31 +08:00 via Android
    我认为 与业务无关,可以抽象成特定问题的代码 叫做算法
    比如你这里
    与业务有关的代码,就叫做逻辑代码。
    比如我得先发消息 a,再发消息 b,否则报错

    但是我通常不会任何可抽象的问题都叫算法。比如我写了加减乘函数,算,但我不会说我今天写了一套算法
    leishi1313
        16
    leishi1313  
       2019-06-21 02:22:25 +08:00 via Android
    茴字的两种写法罢了,没必要争论。不同的代码逻辑可以是不同的算法,相同的算法可以有不同的代码逻辑,硬要细分侧重点是有不同,但是很多时候大家也会混着用的,这时候这俩基本就等于“程序的实现方法”
    lyminghao
        17
    lyminghao  
       2019-06-21 10:56:24 +08:00
    这俩词没啥区别吧。。。至少在定义上算法也没什么高大上的,只是实际使用中算法一般指比较高难度的算法 23333
    enjoyCoding
        18
    enjoyCoding  
       2019-06-21 17:03:14 +08:00
    一般业务上面的东西我喜欢用逻辑代称 不涉及业务只有数据结构或者想 lz 说的这种数据逻辑我称之为算法
    像 lz 这个问题 很自然的想到归并排序对吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2269 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:00 · PVG 09:00 · LAX 17:00 · JFK 20:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.