2017-11-21 2 views
-1

SO私は2つのバブルソートを持っている:1講義スライドから、別のは、私が自分で書いた:教授のバブルソートは、ソート

def lecture_bubble(L): 
    while True: 
     swapped = False 
     for i in range(len(L) -1): 
      if L[i] > L[i+1]: 
       L[i+1] ,L[i] = L[i], L[i+1] 
       swapped = True 
     if not swapped: 
     # No swaps this pass ; therefore sorted 
      return L 

def bubble_sort(array): 
    for i in range(len(array)-1): 
     swapped = False 
     for j in range(len(array)-1,i,-1): 
      if array[j] < array[j-1]: 
       array[j], array[j-1] = array[j-1], array[j] 
       swapped = True 
     if not swapped: 
      return array 
    return array 

は、それらの両方の比較:

Time taken for lecture_bubble is 4.485383749008179 

Time taken for bubble_sort is 0.00061798095703125 
[Finished in 4.6s] 

できる人を私のbubble_sortが配列をソートする時間がかなり短くなっている理由を説明してください。

さらにバブルソートを改善できますか?

+3

これを実際にどのようにテストしたかを確認する必要があります。私の推測:あなたは、あなたが既に教授の並べ替えで並べ替えた配列にあなたのバブルソートを呼び出す。 – user2357112

答えて

0

教授コードは、「スワップされていない場合」がtrueになるまで実行されます。あなたは "forループの終わり"か "スワップされていなければ"のどちらかまで実行されます。場合によっては、コードが機能しないことがあります。

関連する問題