我正在学习OOP,所以我必须与数组进行交互,而不是链接列表。我已经整理了数据。问题是删除数组的成员(我们称之为DL
)。我想出的第一种方法是覆盖i+1
到i
的数据,从DL
的索引开始,并将读数减1。后来我发现我可以将DL
与最后一个成员交换,然后将计数变量减1但是,我必须再次对数据进行排序。那么哪一个更好?哪种方法可以更好地删除数组成员?
2
A
回答
3
如果需要保持排序状态,我认为最好将目标后面的每个元素都改回来,以覆盖它。将它换成最后一个元素,然后再使用它将需要更多的工作,因为交换需要三个动作:
1)将元素1复制到临时变量。 2)将元素2复制到元素1。 3)将temp元素复制到元素2。
这需要在排序算法中重复多次。如果您正在处理一个结构或类的对象数组,每个对象都有多个私有数据成员,则工作负载会进一步增加。
覆写需要更少的移动每次迭代:
1)复制到i + 1
i
。
所以,我肯定会去覆盖,通过移动所有元素回来一个和减少一个。
无论如何,它可能只是最好的时间,与您的具体数据集,并看看哪一个更快。通过计算实施开始和结束之间的毫秒数,这非常简单。
0
“更好”是一个非常主观的术语,哪一个更适合您(无论您选择何种定义)在很大程度上取决于您正在讨论的数据集(大小等)。
但我会提到这一点,阵列洗牌和大多数“常规”排序的相对时间复杂度分别为O(n)
和O(n log n)
。
这意味着在绝大多数情况下洗牌可能会更快。
+0
谢谢,我编辑了标题。 –
相关问题
- 1. 哪种方法可以更好地编写getActivity(),getApplicationContext()?
- 2. 哪种方式更好地调用这个id生成方法?
- 3. 哪种方法可变设置更好?
- 4. CSS - 哪种方法更好?
- 5. 哪种方法可以更好地将数据加载到MongoDB中
- 6. 在创建派生类对象时,哪种方法可以更好地初始化基类成员?
- 7. 本地化:以下哪种方法更好?
- 8. 哪种方法更好,更安全?
- 9. 哪种方式更好地移动ImageView
- 10. 哪种模拟Java中的可选参数更好的方法?
- 11. 哪种关系可以防止删除?
- 12. 从创建数组列表 - 3种方式哪种更好
- 13. 哪种转换方法更好?
- 14. 哪种方法更好,为什么?
- 15. ICallbackEventHandler,HttpHandler,XMLHttpRequestObjext - 哪种方法更好
- 16. 哪种方法更好? libsvm或svmclassify?
- 17. 哪种方法布局更好?
- 18. setter验证:哪种方法更好?
- 19. 关联范围 - 哪种方法更好?
- 20. 哪种方式更好地调用多个组件
- 21. javascript哪种语法更好?
- 22. 哪种方法可以比其他方法更快地调用native API?
- 23. 哪种方法可以更好地去除XML中的冗余空白[strip-space或indent =“no”]?
- 24. 哪种方法最好?
- 25. MKS中可以删除成员吗?
- 26. 哪种解决方案可以更好地选择性能?为什么?
- 27. 什么是删除PowerShell JSON对象的子成员的更好方法
- 28. 以下哪种方法对大表有更好的性能?
- 29. 哪种方式更好地导入电子表格数据?
- 30. 哪种方式更好地使用Linq检索数据?
数组有多大?他们有什么样的数据?它可以memcpy'd?你有没有考虑过尝试和分析? –
我非常厌倦了这种似乎并不需要的帖子的随机downvoting。他问了一个完全有效的问题,不需要被欺负。 –
我的错,特朗,我意识到(迟到),这可能是让你折扣链接列表的'学习',而不是'OOP'中固有的 - 已经消除了我的评论。 – paxdiablo