当STL做得很清楚时,研究不同的排序算法机制的用途
Use of studying different algorithm mechanism for sorting when STL does it crisply
我的意思是,当可以在c++中使用STL的单行帮助下完成时,研究不同的排序算法有什么用?这只是为了知道(或任何其他原因)吗?
这相当于(我认为)了解所有不同的STL容器。想想你拥有的所有不同的选项——存储对象、优先级队列、向量、数组、deques、堆栈、映射、集合等等。列表还在继续。一个天真的程序员可能只需对所有内容使用std::vector
。我的意思是,每个人都在说std::vector
的优点,它可以管理自己的大小,添加新元素的速度非常快,等等……列表还在继续。但你的所有容器都使用std::vector
吗,我当然希望不会!同样的逻辑也适用于了解各种排序算法,在这些情况下,内置的排序机制根本不够,你不仅必须知道如何识别这种情况何时发生,还必须能够想出一个干净的解决方案。
STL有效地处理许多操作(如排序)并不意味着它能有效地处理所有情况
学习不同的做事方式以及它们提供的好处/权衡通常是有帮助的。
举(极端的)例子;如果您对最多包含5个元素的容器进行排序,那么低气泡排序可能会执行std::sort(很可能是quicksort)。所以,如果这是你每秒做数百万次的事情,那么你就会输给std::sort。
从来没有(或者至少"很少")一个问题的"最佳"解决方案。因此,了解替代方案和权衡是有价值的。
相关文章:
- C++选择排序算法中的逻辑错误
- 排序算法c++
- 下面是排序算法O(n)吗
- 为什么我的排序算法会更改数组值
- C++运行时错误与快速排序算法抛出堆栈转储错误
- 排序算法问题(购买商店物品)(崩溃)
- 为什么这个选择排序算法仍然切换一个元素,当它已经是其他元素中最小的元素时?
- 为什么在此排序算法实现中,向量明显比数组慢?
- C++中合并排序算法的奇怪行为
- 我的排序算法程序中的堆错误
- 如何使用cpp编写选择排序算法以降序对元素列表进行排序?
- 解释一下这个排序算法是如何工作的?
- 快速排序函数在快速排序算法中如何工作?
- 分段故障,合并排序算法
- 这种排序算法已经存在吗?
- 为什么此代码上的排序算法不调用类的交换版本?
- 为什么我的替代排序算法不起作用?
- 选择排序算法生成无序结果
- 递归合并排序算法实现
- 这种快速排序算法有什么问题?