Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将伪代码转换为尽可能类似的实现_Java_Algorithm_Loops_Computer Science - Fatal编程技术网

Java 将伪代码转换为尽可能类似的实现

Java 将伪代码转换为尽可能类似的实现,java,algorithm,loops,computer-science,Java,Algorithm,Loops,Computer Science,当我从教科书上学习算法时,通常伪代码中的算法是尽可能通用的 一个例子是,为了简化检查或边界情况,或何时停止循环,正在使用占用-/+无穷大(当然是一种简化) 例如: current sum= total-sum=0 for i=x downto low total-sum=total-sum+A[i] if(total-sum > current-sum) //so that in first iteration we will enter the if state

当我从教科书上学习算法时,通常伪代码中的算法是尽可能通用的

一个例子是,为了简化检查或边界情况,或何时停止循环,正在使用占用-/+无穷大(当然是一种简化)

例如:

current sum=

total-sum=0  
for i=x downto low  
 total-sum=total-sum+A[i]  
     if(total-sum > current-sum)  //so that in first iteration we will enter the if statement
etc

好的,当在编程语言中实现算法时,可以用我们的问题域中不期望的值来替换负无穷大

我想知道,在用具体的编程语言(例如Java)实现算法时,是否有比执行更通用的方法/技巧来表示这一点:
e、 g.
当前总和=-1
当前总和=-10000

例如,这些值以后实际上可以作为域值变得有效

int current_sum = Integer.MIN_VALUE;

这为current_sum提供了一个int可以具有的最小值,-(2^31)。

通常,您用适合您的数据类型的最大值表示无穷大

例如,如果您有+INFITY,则可以使用
Integer.MAX\u VALUE
。 与-infinity相同,您可以使用
Integer.MIN\u值

与其他数据类型相同。

您可以使用最小的32位可表示值(-2^31)

或者,如果这实际上是问题中的一个有效值,则可以扩展到64位,只需使用
Long.MIN_value


最后,总是有
booleanfirsttime=true的选项
条件,则将其设置为
|
,然后立即将其设置为
整数.MIN\u值
整数.MAX\u值
错误的解决方案,因为在某些情况下,它们可能成为域中的值。更仔细地使用
Double.NEGATIVE_∞

例如
Double.NEGATIVE_∞+2=Double.NEGATIVE_∞

我想知道在具体编程语言中实现算法时是否有更通用的方法/技巧来表示这一点

通常不会。没有办法将“负无穷大”表示为始终有效的整数。通常使用可能的最小整数值(在Java
integer.MIN\u value
中)。但您需要查看特定的算法,以了解此解决方案是否有效

因此,没有通用/通用解决方案


在您的示例中,
Integer.MIN_VALUE
可以用来代替“负无穷大”。然而
如果算法要求您使用
Integer.MIN_VALUE
作为实际值,那么您也不能将其用作“无值”标记。
Integer.MIN_VALUE
不能作为“负无穷大”的代理的另一种情况是当您使用它进行算术运算时。(
Integer.MIN\u VALUE+x==Integer.MIN\u VALUE
仅适用于
x==0

我不明白伪代码在做什么或为什么。伪码是计算最大子阵问题的算法的一部分。在这一部分中,它计算数组中的和,并使用-无穷大作为起点。如果你认为这有意义,我可以发布更多有趣的伪代码,我从来不知道这个属性。Cool.+1用于扩大对一般问题的处理