2017-04-12 172 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