我已经用Python编写了一个程序,它可以使用不同的算法对包含5000个不同数字的随机列表进行排序,并比较时间。
快速排序通常比桶排序慢,为什么?
我以为快速排序更快。
这是我的程序:
快速排序通常比桶排序慢,为什么?
我以为快速排序更快。
这是我的程序:
快速排序
def quicksort(seq):
wall = 0
pivot = seq[-1]
for index, num in enumerate(seq):
if num < pivot:
seq[wall], seq[index] = seq[index], seq[wall]
wall += 1
seq[wall], seq[-1] = seq[-1], seq[wall]
left = seq[:wall]
if len(left) > 0:
left = quicksort(left)
right = seq[(wall + 1):]
if len(right) > 0:
right = quicksort(right)
return left + [pivot] + right
Bucket sort
def bucket_sort(seq):
biggest = 0
for number in seq:
if number > biggest:
biggest = number
buckets = []
buckets.append([]) * (biggest / 10 + 1)
for number in seq:
buckets[number / 10].append(number)
for index, bucket in enumerate(buckets):
#Using quicksort to sort individual buckets
buckets[index] = quicksort(bucket)
new_list = [number for number in bucket for bucket in buckets]
return new_list
list
是一个非常糟糕的名称,因为它隐藏了同名的内置类。 - David Heffernan