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

问题描述:

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函数的普通排序。为什么我没有得到排序的列表?在没有排序函数的情况下在python中排序列表

+0

为什么“没有'sorted()'函数”? – Johnsyweb

+0

@Johnsyweb我猜这是一个任务。教师通常不要求内建,以便学生如何做到这一点,而不是他们。 – rdodev

+0

@rdodev:是的,如你所说。在有问题的会议和采访中,他们期望它没有内置的功能。 – rajpython

t = a[j] 

其次

a[j] = t 

看起来不正确。如果你的意思来交换他们的第二个应该是:

a[j + 1] = t 

但是在Python中,这是更好的写法如下:

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

(当然,在Python,这是更好写成快速排序)

+0

尽管这可能是一项家庭作业,但这是一项专业工作。希望OP能够欣赏并从中学习。 – rdodev

+0

是!谢谢你! – rajpython

+0

我是python编程的新手。你能解释为什么在这里使用两个for循环吗? 。我知道这是一个愚蠢的问题。但我无法得到这个概念。 –

试试这个 - :

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 

:)

+1

@minitech已经在下面回答了同样的问题,只是说。 – rdodev

+0

我是python编程的新手。你能解释为什么你在这里使用两个for循环? –

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