冒泡排序错误

时间:2011-11-03 20:02:57

标签: python bubble-sort

我正在尝试编写和优化冒泡排序,但我的代码实际上并没有在列表中排序。有关为何提前停止的建议吗?

#!/usr/bin/env python

from random import *
import time

def bubble(lst):
    counter = 0
    n = len(lst)
    while n > 0:
        temp = 0
        for i in range(1, n - 1):
            if lst[i] > lst[i + 1]:
                lst[i], lst[i + 1] = lst[i + 1], lst[i] # swap
                temp = i
                counter += 1 # to compare the speed to the
                             # unoptimized bubble sort
            n = temp
    return counter

def main():
    lst = range(10)
    shuffle(lst)
    print lst
    start = time.time()
    counter = bubble(lst)
    print lst
    end = time.time()
    print counter
    print "time", end - start

main()

1 个答案:

答案 0 :(得分:0)

这应该解决它:

def bubble(lst):
    counter = 0
    n = len(lst)
    while n > 0:
            temp = 0
            for i in range(0,n-1): # <- first element is at position 0
                    if lst[i] > lst[i+1]:
                            lst[i],lst[i+1] = lst[i+1],lst[i]  #swap
                            temp = i+1 # <- the last swapped position
                            counter += 1
            n = temp
    return counter