我正在学习OOP,所以我必须与数组交互,而不是链接列表。我有数据排序。问题是删除数组的成员(让我们称之为DL
)。我提出的第一种方法是从i+1
到i
覆盖数据,从DL
索引开始,并将读数减少1.后来我发现我可以将DL
与最后一个成员交换,然后将计数变量减少1.但是,我必须再次对数据进行排序。哪一个更好?
答案 0 :(得分:3)
如果它需要保持分类,我说最好通过在目标之后移动每个元素来覆盖它。将其与end元素交换然后求助将需要更多工作,因为交换需要三个操作:
1)将元素1复制到临时变量。 2)将元素2复制到元素一。 3)将temp元素复制到元素二。
这需要在排序算法中重复多次。如果您正在使用每个具有多个私有数据成员的结构或类的对象数组,则工作负载会增加更多。
每次迭代时,覆盖采取的移动次数更少:
1)将i + 1
复制到i
。
所以,Id肯定会通过将所有元素移回一个并将计数减少一个来进行覆盖。
无论如何,使用您的特定数据集,最好同时计算两者,并查看哪一个更快。通过计算实现的开始和结束之间的毫秒数,这非常简单。