我有一个链表,我想检查它是近乎排序还是随机?谁能建议怎么做?
现在我要做的是运行列表的一半并比较相邻元素以检查给定列表是否几乎排序或其他。但困难在于这种方法不是完全证明,我想要具体的东西。
答案 0 :(得分:0)
例如,如果您有100个项目,那么比例将超过100.(列表排序的分数。)如果您对所有列表进行了排序,则得分为100.如果列表已排序在倒退然后你得到0分。您将检查每个相邻的并确定该对是否已排序(第0和第1,第1和第2,第2和第3等等)。因此,您将具有0到100之间的比例(或您的案例的链接列表大小)。关于“分类量表”有很多启发式方法,但这可能是一个。
答案 1 :(得分:0)
如果您想要涉及数据的幅度(Python3):
import random
l = [random.random() for x in range(100)]
s = 0
for i,x in enumerate(l[0:50]):
s += l[i+1] - x
print(s)
如果您只想查看已排序的值的数量,请将s+=
行替换为
s += 1 if l[i+1] > x else 0