需要伪代码从键盘输入一系列数字,并确保它们按升序排列,即使它们不需要连续。数字可以是正数或负数,并以虚拟值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”
答案 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>