【发布时间】:2025-12-08 20:20:04
【问题描述】:
在我的应用程序中,我有一个对象字典(散列图)。每个对象都有几个属性,包括“uuid”、“name”和“level”。 uuid 是唯一的唯一字段,用作字典键。我希望能够根据它们的名称按字母升序列出这些对象,如果名称相同,则按数字升序排列。为此,我试图维护一个 uuid 的列表(数组)(因此我不必存储整个对象),我可以简单地遍历列表,在每个特定索引处从 uuid 引用适当的对象。因此,当我将对象添加到字典时,必须更新列表。我正在尝试使用二进制搜索算法首先找到其 uuid 与适当名称匹配的列表的索引,然后匹配适当的级别。我的代码让我很接近,但仍然出现语义错误。这里是。谁能帮我调整一下或指出正确的方向? (为了便于理解,我只给出了伪代码)
min = 0
max = numRecords - 1 #numRecords is the number of objects in the dictionary
mid = 0
while max >= min:
mid = (min + max) / 2
if dict[uuid].name() == dict[list[mid]].name():
if dict[uuid].level() == dict[list[mid]].level():
break
elif dict[uuid].level() < dict[list[mid]].level():
if mid != 0 and dict[uuid].name() == dict[list[mid - 1]].name():
max = mid - 1
else:
break
else:
if mid != numRecords-1 and dict[uuid].name() == dict[list[mid+1]].name():
min = mid + 1
else:
break
elif dict[uuid].name() > dict[list[mid]].name():
min = mid + 1
else:
max = mid - 1
list = list[:mid] + [uuid] + list[mid:]
【问题讨论】:
标签: python-3.x indexing binary-search