当STL做得很清楚时,研究不同的排序算法机制的用途

Use of studying different algorithm mechanism for sorting when STL does it crisply

本文关键字:排序 算法 机制 STL 清楚      更新时间:2023-10-16

我的意思是,当可以在c++中使用STL的单行帮助下完成时,研究不同的排序算法有什么用?这只是为了知道(或任何其他原因)吗?

这相当于(我认为)了解所有不同的STL容器。想想你拥有的所有不同的选项——存储对象、优先级队列、向量、数组、deques、堆栈、映射、集合等等。列表还在继续。一个天真的程序员可能只需对所有内容使用std::vector。我的意思是,每个人都在说std::vector的优点,它可以管理自己的大小,添加新元素的速度非常快,等等……列表还在继续。但你的所有容器都使用std::vector吗,我当然希望不会!同样的逻辑也适用于了解各种排序算法,在这些情况下,内置的排序机制根本不够,你不仅必须知道如何识别这种情况何时发生,还必须能够想出一个干净的解决方案。

STL有效地处理许多操作(如排序)并不意味着它能有效地处理所有情况

学习不同的做事方式以及它们提供的好处/权衡通常是有帮助的。

举(极端的)例子;如果您对最多包含5个元素的容器进行排序,那么低气泡排序可能会执行std::sort(很可能是quicksort)。所以,如果这是你每秒做数百万次的事情,那么你就会输给std::sort。

从来没有(或者至少"很少")一个问题的"最佳"解决方案。因此,了解替代方案和权衡是有价值的。