python - 用虚拟值编写伪代码

标签 python algorithm pseudocode

<分区>

需要一个伪代码来从键盘输入一系列数字并确保它们按升序排列,即使它们不需要连续。数字可以是正数或负数,并且将以虚拟值 9999 结尾。

这是我写的python代码,运行正常,

li=[]
num=int(raw_input("Enter number"))
while num!=9999:
    li.append(num)
    num=int(raw_input("Enter number"))
new=0   
print "Entered sequence is "
print li
j=0
while j<len(li):
    for i in range(len(li)-1):
        value1=li[i]
        value2=li[i+1]

        if (value1>value2):
            new=li[i]
            li[i]=li[i+1]
            li[i+1]=new
    j+=1
print "ordered list is "
print li

但是我在将其写成算法时遇到了问题。

这是我尝试过的算法:

Main
    li      list
    num     integer
    new=0,j=0       integer
    Begin   
        num=INPUT num.
        while num<>9999.
            append num to li.
            num=INPUT num.
        ENDWHILE.
    DISSPLAY "Entered Sequence is".
    OUTPUT li.
    while j<(length of li).
        FOR i=0 to (length of li-2).
        value1=i th element of li
        value2=(i+1) th element of li
            if (value1>value2):
                new=value1
                value1=value2
                value2=new
            ENDIF
        END FOR
        j=j+1
    ENDWHILE
    DISPLAY "ORDERED LIST IS"
    DISPLAY li
    END
END

我可以在算法中使用“list”吗,因为我认为作为“list”的对象不会出现在每种编程语言中。而且算法不应该是通用代码。允许使用相同的方法在编写算法时使用数组

可以说“value1=li 中的第一个元素”吗?

以及如何显示我正在将从键盘输入的值分配给变量“num”

最佳答案

(这本来是评论)

您似乎忽略了伪代码的意义所在。伪代码既没有标准化也没有定义。一般来说,它只是算法的类代码表示,同时保持高水平和可读性。您可以以任何您喜欢的形式编写伪代码。即使是真正的 Python 代码也可以被视为伪代码。话虽这么说,伪代码中没有什么是不允许的;你甚至可以写散文来解释发生的事情。例如,在最内层的循环中,您可以只写“交换值 1 和值 2”

这就是我将您的 Python 代码转换为伪代码的大致方式。我倾向于忽略所有特定于语言的内容,而只关注实际的算法部分。

Input:
    list: Array of input numbers

FOR j = 0 to length(list):
    FOR i = 0 to length(list)-1:
        if list[i] > list[i+1]:
            Swap list[i] and list[i+1]
OUTPUT ordered list

So is it okay to use lists, tuples, dictionaries in a pseudocode, even if they are not common to all programming languages?

当然!在更复杂的算法中,您甚至会发现诸如“获取 XY 的最小生成树” 之类的东西,这将是一个完全不同的问题,同样存在多个不同的解决方案。您没有指定特定的解决方案,而是让它对实际实现开放,该算法将用于该解决方案。对于您当前描述的算法通常无关紧要。也许稍后当你分析你的算法时,你可能会提到诸如“有已知的算法可以在 O(log n) 中做到这一点” 之类的东西,所以你就用它来继续。

关于python - 用虚拟值编写伪代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19876493/

相关文章:

python - 将numpy数组转换为元组

python - Sqlalchemy 重复条目

algorithm - 如何使用级别顺序遍历来查找两棵树在结构上是否相同?

python - 使用另一个线集合裁剪线集合

python - django-从管理员运行脚本

python - 使用 Keras + Flask 蓝图时容器本地主机不存在错误

python - 最佳实践 : how to pass many arguments to a function?

c++ - 如何在给定数组的任何子数组(任何大小)中找到最大值(或最小值)?

python - 具有可变数量 worker 的任务的最佳调度

algorithm - 如何检测是否存在重复模式