有人能澄清程序和算法之间的区别吗?

时间:2015-05-25 17:11:26

标签: algorithm

所以,我一直在做一些关于算法的研究和搜索谷歌。在我深入了解之前,我已经掌握了它。

我知道算法被定义为:在计算或其他解决问题的操作中要遵循的一个或一组规则,尤其是计算机(引自字典)。 计算机程序定义为:是一系列指令,用于在计算机上执行指定的任务(引自维基百科)

我在一个帖子上看到的类比对我有所帮助:

蛋糕算法:

--Get Ingredients
--Bake
--Serve

蛋糕计划:

--2fl of flour
--3 eggs
--Mix in pan
--etc.

正如我所看到的算法更为通用

所以基本上我开始认为计算机程序是实现算法的代码,换句话说算法是一个蓝图。例如,这是一个简单的算法:

Step 1: Start
Step 2: Declare variables num1, num2 and sum. 
Step 3: Read values num1 and num2. 
Step 4: Add num1 and num2 and assign the result to sum.
    sum=num1+num2 
Step 5: Display sum 
Step 6: Stop

我也知道,经过更多谷歌搜索后,算法可以用伪代码表示:

if a>b 
    Display a is bigger than b #Simple Example, but you get the point

它们也可以用实际代码形成(按照你的方式制作算法),如下所示:

def foo():
    #Blank Code for Algorithm/to be used later

所以现在这就是我的问题,我看到很多stackoverflow线程要求用户解释/纠正他们的算法。但是,当我查看算法而不是看到类似上面的示例时,我会看到:

// I know this isn't Python but that's not the point!      
for (int i = 0; i < N; i++) {Console.Write('Hello World !');
}

没有空白函数/空代码块,它全部填写等等 所以现在我的问题是:

  1. 例如上面的代码确实是算法吗?或者是遵循算法?
  2. 编写的程序
  3. 如果它被认为是算法,那么作为算法和作为计算机程序的代码有什么区别呢?
  4. 如果是两者,这是否意味着这两个术语可以互换使用?
  5. 对初学者的任何澄清都会很好。

3 个答案:

答案 0 :(得分:1)

// I know this isn't Python but that's not the point!      
for (int i = 0; i < N; i++) {
  Console.Write('Hello World !');
}
  

例如上面的代码确实是算法吗?或者它是一个程序   写在算法之后?

不。如果您要删除打印部分并只添加print hello world而不是Console.Write(),那么可以成为打印问候世界的算法{{1时间。

  

如果它被认为是算法,那么它之间有什么区别   是一个算法,那个代码是一个计算机程序?

算法与语言无关,它只显示如何做某事,该语言为如何实现某些内容定义了更严格的规则。考虑到语言定义的规则和语法,程序用于实现算法。

  

如果两者兼而有之,那是否意味着可以使用这两个术语   可互换?

不。算法不是特定语言,而程序总是与编程语言结合使用。

示例语句:编写Java程序以实现BubbleSort算法

答案 1 :(得分:0)

首先欢迎来到StackOverflow和编码世界。

您的问题的答案:

1.例如上面的代码确实是算法吗?或者它是一个遵循算法编写的程序?

WELL that's is not the algorithm as described above. And the answer to remaining part is explained as above

您会看到该算法是用简单的简单语言描述代码的东西。您可以用伪代码或流程图来解释程序的蓝图。您无法将其提供给PC,而无需实际提供PC将接受的格式。因此,您需要使用C,CPP,Python等语言将其转换为程序

2.如果它被认为是算法,那么作为算法和作为计算机程序的代码有什么区别呢?

No, it shouldn't be because of the exact same reason stated above. 

3.如果两者兼而有之,是否意味着这两个术语可以互换使用?

<tbody ng-repeat="x in y" >
  <tr>
    <td>{{X. row data}}</td>
    <td>{{X. row data 2}}</td>
  </tr>
  <tr>
    <td colspan="2">
      {{X. secondRowData}}
    </td>
  </tr>
</tbody>

希望你明白。

干杯

答案 2 :(得分:0)

类和实例对象之间的区别相同。