我创建了一个排序函数,用于排序整数列表,从最高到最低。 这是代码:
def sort(list):
s = []
dropnum = 0
l = len(list) - 1
counter = 0
s.append(list[0])
while 1:
maximum = len(s)
if counter == l:
break
if list[counter] < s[dropnum]:
dropnum = dropnum + 1
else:
counter = counter + 1
if dropnum >= maximum:
a.append(list[counter])
else:
s.insert(dropnum, list[counter])
dropnum = 0
return s
print sort([70,9,24,82,102])
我应该得到输出:
[102,82,70,24,9]
但我明白了:
[102, 82, 24, 9, 70]
答案 0 :(得分:1)
我相信你已经知道了,python的内置sorted()
是一种更有效的排序方式。
print sorted([70,9,24,82,102], reverse=True)
假设这是一个学习练习,我认为这就是你想要做的事情
def sort(lst):
s = []
for item in lst:
dropnum = 0
while dropnum < len(s) and s[dropnum] > item:
dropnum += 1
s.insert(dropnum, item)
return s
print sort([70,9,24,82,102])
如果以通常的Python方式遍历列表
,则根本不需要该计数器变量for item in lst: # loop through the items in the input
答案 1 :(得分:0)
你有一些内置于python的简单选项:
list.sort(...) # in-place, more memory efficient
和
sorted(my_iterable, ...) # returns a new copy
两者都可以选择使用布尔reverse
标志,自定义cmp
比较函数和key
来定义要排序的成员
我相信这两者都在内部使用了快速排序实现的变体(对于大型集合,对于较小的集合使用更简单的迭代算法)。对于python版本2.3+,保证排序稳定。
此外,您不应将名称与内置函数或类型(例如list
)命名的参数或变量命名,因为您污染了当前范围中的命名空间。