在没有排序函数的情况下在python中排序列表

时间:2013-11-28 04:12:11

标签: python list sorting

import sys
import pdb

a = [5, 2, 4, 1]

for i in range(len(a)):
    for j in range(len(a) - 1):
        if a[j] > a[j+1]:
            t = a[j]
            a[j] = a[j+1] 
            a[j] = t

print a                   
sys.exit()

我刚刚在Python中尝试了一个C程序 - 没有sorted函数的正常排序。为什么我没有得到排序列表?

5 个答案:

答案 0 :(得分:4)

t = a[j]

接着是

a[j] = t

似乎不对。如果您打算交换它们,第二个应该是:

a[j + 1] = t

但在Python中,最好写成:

a[j], a[j + 1] = a[j + 1], a[j]

(当然,在Python中,很多更好地编写为quicksort。)

答案 1 :(得分:1)

试试这个 - :

for i in range(len(a)):
    for j in range(len(a) - 1):
        if a[j] > a[j+1]:
            a[j+1], a[j] = a[j], a[j+1]

print a

:)

答案 2 :(得分:1)

for循环中的最后一行应为a[j+1] = t。我认为这只是代码错误。下次要小心。另外,在Python中,当你想要交换两个变量时,你应该遵循@minitech和@Nilesh G所说的内容。

答案 3 :(得分:0)

a = [5,2,4,1]
for i in range(len(a)):
    for j in range(len(a)-1):
        If a[j]>a[j+1]:
            a[j],a[j+1] = a[j+1],a[j]
Print a

答案 4 :(得分:0)

s = [3, 6, 4, 5, 2, 1, 7, 8, 11, 12]
for k in range(len(s)):
    for m in range(len(s)-1):
        if s[m]>s[m+1]:
            s[m],s[m+1] = s[m+1],s[m]
print s