首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >冒泡排序不起作用

冒泡排序不起作用
EN

Stack Overflow用户
提问于 2013-04-13 23:32:28
回答 1查看 175关注 0票数 0

这是我在python put中的冒泡排序,我似乎找不到问题所在。

我希望开始创建更复杂的排序算法,但我必须首先了解为什么我的冒泡排序不起作用。

如果程序没有正确排序,则插入断言以使程序崩溃(每次我运行它(包括调试)时都会发生这种情况)。

代码语言:javascript
复制
N=5000
#function to sort a list
def bubble_sort(numbers):
    to_go = len(list_n)
    while to_go != 0:
        newn = 0
        for i in range(1, to_go):
            if list_n[i-1] > list_n[i]:
                swap(i-1, i)
                newn = i
        to_go = newn
def swap(item_1, item_2):
    list_n[item_1], list_n[item_2] = list_n[item_2], list_n[item_1]

list_n = []
for e in range(0,N):
    list_n.append(random.randint(1,N-1))
copy = list_n[:]
#time the sorting routine
t1 = time.clock()
bubble_sort(copy)
t2 = time.clock()
#make sure the list was sorted correctly
list_n.sort()
assert(list_n==copy) 
#print how long the function took to do the sort
print 'mySort took', t2-t1, 'seconds.'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-13 23:43:27

基本上,问题是您将列表作为numbers传递给bubble_sort函数,但在该函数中,您从未使用过该参数。

您应该在bubble_sort中将所有出现的list_n替换为numbers,并将其作为附加参数传递给swap函数,这样您实际上就交换了正在处理的列表中的数字,而不是全局变量list_n

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15989469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档