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_∞
我想知道在具体编程语言中实现算法时是否有更通用的方法/技巧来表示这一点
通常不会。没有办法将“负无穷大”表示为始终有效的整数。通常使用可能的最小整数值(在Javainteger.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用于扩大对一般问题的处理