用虚拟值编写伪代码

时间:2013-11-09 13:26:29

标签: 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 ”,因为我认为对象作为“列表”并没有出现在每种编程语言中。并且算法不应该是一般代码。允许的方式是允许的在编写算法时使用数组

并且可以说“value1 = li中的元素”吗?

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

1 个答案:

答案 0 :(得分:1)

(这最初是评论)

您似乎错过了伪代码的重点。伪代码既不是标准化的,也不是某种程度的定义。通常,它只是算法的代码式表示,同时保持高级别和可读性。您可以以任何您喜欢的形式编写伪代码。即使是真正的Python代码也可以被认为是伪代码。话虽这么说,伪代码中没有任何东西是不允许的;你甚至可以写散文来解释发生的事情。例如,在最内层循环中,您只需编写“swap value1 and value2”

这大致是我将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

  

使用伪代码中的列表,元组和字典是否可以,即使它们并非所有编程语言都通用?

绝对!在更复杂的算法中,您甚至可以找到诸如“获取XY的最小生成树”之类的内容,这将是一个完全不同的问题,同样存在多个不同的解决方案。您没有指定特定的解决方案,而是保持对实际实现的开放性,即使用哪种算法。它通常与您当前描述的算法无关。也许以后当你分析你的算法时,你可能会提到诸如“已知有这种算法的人可以在O(log n)中执行此操作等等,所以你只需要用它来继续。< / p>