im with this IndexError: list index out of range error and don
我不知道如何解决它,我必须创建和排序一个随机列表5,10,100,1000,10000。如果我运行这段代码一次,我没有得到这个错误
import random
def bucketSort(array):
bucket = []
# Create empty buckets
for i in range(len(array)):
bucket.append([])
# Insert elements into their respective buckets
for j in array:
index_b = j #int(10 * j)
bucket[index_b].append(j)
# Sort the elements of each bucket
for i in range(len(array)):
bucket[i] = sorted(bucket[i])
# Get the sorted elements
k = 0
for i in range(len(array)):
for j in range(len(bucket[i])):
array[k] = bucket[i][j]
k += 1
return array
for i in range(10):
nElementos = 10
array = [0] * nElementos
for i in range(nElementos):
array[i] = random.randint(0,nElementos)
print(array)
print("Sorted Array in descending order is")
print(bucketSort(array))
第14行,在bucketSortbucket[index_b].append(j) IndexError: list index out of range
如果array
中的项大于或等于len(array)
,您将获得索引错误,因为(在第14行)您试图将该元素插入到与array
长度相同的桶中。
问题是:
random.randint(0,nElementos)
生成范围从0到nElementos
的整型,包括. 如果生成的随机数与nElementos
相同,则代码将中断,因为它基本上会尝试这样做:
bucket[len(array)]
假设其余代码是正确的,只需将随机生成更改为此,它应该可以工作
random.randint(0, nElementos - 1)