2017-04-12 261 views
-2

这是我得到的伪代码:翻译伪成Python

  1. 评论:定义一个函数sort1

  2. INPUT:数字我的名单

  3. 打印初步名单列表

  4. 遍历列表中的所有位置i;从第二个元素开始(索引1)

    注释:此时,此列表中从0到i-1的元素按 向后循环遍历位于i左侧的列表中的那些位置j;起始位置i-1,只要继续这一循环如在j处的值+ 1小于值与j

  5. 交换在j和的值J + 1

  6. 打印当前目录

这是我想出了Python代码:

#define a function sort1 
my_list=range(1,40) 
print 
print my_list 
num_comparisons=0 
num_swaps=0 
for pos in range (0,len(my_list)-1): 
    for i in range(pos+1,len(my_list)): # starting at position i-1 continue this loop as long 
             # as the value at j+1 is less than the value at j 
     num_comparisons+=1 
     if my_list[i]<my_list[pos]: 
      num_swaps+=1 
      [my_list[i],my_list[pos]]=[my_list[pos],my_list[i]] 

print my_list 
print 
print num_comparisons, num_swaps 

我不知道我这样做是正确的,虽然。

+0

欢迎[所以]。请复习[问] ...你尝试过运行它吗?你遇到什么问题? – TemporalWolf

+0

这看起来像功课。不知道这是否是寻求帮助的正确位置 –

+1

验证它的正确方法是确定意图是什么,然后检查一些输入数据,它会给出您期望的结果。只是“翻译”它而不知道目标或对输入/输出有任何想法并不会对你有多大帮助。 –

回答

0

正如我在评论说,我觉得你有效j(还有i)关于伪COMMENT会谈。但是,在您的代码中,i是变量pos,这将使您的代码中的ji

要查看您的代码是否正常工作,您需要先初始化一个未排序的列表,而不是代码中的my_list=range(1,40)(即[1, 2, 3, ... 38, 39]并已按数字顺序排列)。

你没做的一件事是定义一个sort1()函数。

以下是本质上是您的代码,但我重命名了两个变量以匹配伪代码COMMENT,并将它(大部分)放在它应该是的函数定义中。

除此之外,我不得不宣布(未在伪代码提到的)作为global,使他们可以在外部访问的变量num_comparisonsnum_swaps功能,否则他们会一直在默认情况下,只可访问的本地变量的功能。

def sort1(items): 
    """ Sort given list of items in-place. """ 
    # allow access to these variables outside of function 
    global num_comparisons 
    global num_swaps 

    # initialize global variables 
    num_comparisons = 0 
    num_swaps = 0 

    # starting at position i-1 continue this loop as long 
    # as the value at j+1 is less than the value at j 
    for i in range(0, len(items)-1): 
     for j in range(i+1, len(items)): 
      num_comparisons += 1 
      if items[j] < items[i]: 
       num_swaps += 1 
       [items[j], items[i]] = [items[i], items[j]] 

my_list = [6, 3, 7, 2, 9, 4, 5] 

print 'my_list before sort:' 
print my_list 
sort1(my_list) 
print 'my_list after sort:' 
print my_list 
print 
print 'num_comparisons:', num_comparisons, ', num_swaps:', num_swaps 

输出:

my_list before sort: 
[6, 3, 7, 2, 9, 4, 5] 
my_list after sort: 
[2, 3, 4, 5, 6, 7, 9] 

num_comparisons: 21 , num_swaps: 10 
+0

谢谢!每次我尝试定义函数时,我都会遇到错误,现在我明白了为什么,我将print语句和列表放在函数后面。 – Nicole