【发布时间】:2018-02-27 18:28:37
【问题描述】:
我尝试使用附加数组编写计数排序算法,但不知何故,随机生成的数组中的 1 个元素没有打印出来。
import random
import time
start_time = time.clock()
N = random.randint(3,12)
list1 = []*N
for i in range (1,N+1):
list1.insert(random.randint(1,100),random.randint(1,100))
print("Input array: ",list1)
B = [0]*(N+1)
for i in range(1,N):
k = 1
for j in range(1,N):
if (list1[j]<list1[i]) or ((list1[j]==list1[i]) and (j<i)):
k = k+1
B[k]=list1[i]
for i in range(1,N):
list1[i]=B[i]
print("Sorted array: ",B)
print("Amount of numbers in array: ",N)
print("Code is finished within",time.clock()-start_time, "seconds")
【问题讨论】:
-
我不喜欢那些
range(1,N)s 的样子。你知道列表是零索引的,对吧? -
在将所有范围和计数器 k 更改为 0 后,排序后有 1 个额外的零,删除后我得到了完全排序的数组,但我该如何纠正这个错误,所以排序后的数组不需要任何更改?
-
github.com/Nbody231/CountingSort/blob/master/… 这对后代来说是完全可用的代码。