2 chenise chenise 于 2015.05.29 16:26 提问

我的冒泡排序(python)为何实现不了?

这是我根据描述写的代码:

 def bubblesort(l):
    for i,j in enumerate(l[:-1]):
        for x,y in enumerate(l[i+1:]):
            if j > y:
                tem = l[i]
                l[i] = l[x]
                l[x] = tem
    return l

这是豆瓣上找到的代码:

 def bubble(x,n):
    """
    冒泡排序,x是列表,n是列表长度
    """
    for i in range(n):
        for j in range(n-1):
            if x[j]>x[j+1]:
                t = x[j]
                x[j] = x[j+1]
                x[j+1] = t
    return x

print bubble([1,10,2,5,41,25,3,48], 8)  #[1, 2, 3, 5, 10, 25, 41, 48]

我感觉都一样啊。。。而且,我用enumerate是出于内存的考虑,不知道这想法对不对

2个回答

u011845742
u011845742   2015.05.29 17:49
已采纳

1楼说的对,可以再试试。。。。

chenise
chenise 同样感谢你
2 年多之前 回复
Tiger_Zhao
Tiger_Zhao   Rxr 2015.05.29 16:51

enumerate()是函数,等于是先对列表做了一个快照。之后你修改列表是不影响快照的。

Tiger_Zhao
Tiger_Zhao 回复chenise: enumerate()拿列表构建了一个字典,字典和列表没有直接关系。
2 年多之前 回复
chenise
chenise 额。。不好意思啊 本来想采纳你的 按错了 ,希望不要介意 你的意思是函数对列表操作的时候都是操作列表的快照吗?
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!