我有两个标记对象列表:
class Marker():
def __init__(self,marker_number, marker_data):
self.marker_number = marker_number
self.marker_data = marker_data
我想做的是:
^{2}$因此,当我交错标记时,新标记列表中与原始标记列表中编号相同的标记出现在原始标记之后,但编号会更新以保持编号顺序。这是我目前的做法:
def interlace_markers(current_markers_list, new_markers_list):
interlaced_markers = []
#interlace the markers
for existing_marker in current_markers_list:
interlaced_markers.append(existing_marker)
for new_marker in new_markers_list:
if new_marker.marker_number== existing_marker.marker_number:
interlaced_markers.append(new_marker)
#reset the sequence
sequence_index = 1
for marker in interlaced_markers:
marker.marker_number= sequence_index
sequence_index += 1
return interlaced_markers
我有两个问题:
如果我能正确理解你的意思,我认为这是最容易做到的简单排序:
现在,如果要更改编号,可以在一个简单的循环中执行此操作:
^{pr2}$请注意,这是因为python的排序是稳定的,这意味着如果不需要的话,顺序不会改变。在
这就产生了一个O(n)+O(nlogn)=O(nlogn)的算法,这个算法并不糟糕。在
相关问题 更多 >
编程相关推荐