微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我应该使用冒泡排序、插入排序等排序算法,还是应该使用 C++ 中的内置 sort() 函数对数组进行排序?

如何解决我应该使用冒泡排序、插入排序等排序算法,还是应该使用 C++ 中的内置 sort() 函数对数组进行排序?

我应该使用冒泡排序、插入排序等排序算法,还是应该使用 C++ 中的内置 sort() 函数对数组进行排序?如果我应该使用 sort() 函数,为什么我需要学习其他排序算法?如果有内置的排序功能,我不明白这些算法有什么用,它们有什么特别的吗?

解决方法

我应该使用冒泡排序、插入排序等排序算法,还是应该使用 C++ 中的内置 sort() 函数对数组进行排序?

这是你的愿望。你可以使用任何东西。但是在使用任何代码之前,您需要了解时间和空间复杂度的重要性,以及您的要求。

如果我应该使用sort()函数,我为什么要学习其他排序算法?

这个问题的答案很棘手。您需要学习一些东西,因为每种排序算法在实现、时间和空间复杂性方面都不同。例如,冒泡排序的运行时间为 O(n^2),而归并排序的运行时间为 O(n log n)。 冒泡排序占用的空间是O(1),归并排序占用的空间是O(n)。在代码复杂度方面,你可以在5分钟内写一个冒泡排序片段,而归并排序可能需要30分钟。

如果有内置的排序功能,我不明白这些算法有什么用,它们有什么特别的吗?

是的。这与需求有关。今天,您可能不需要空间高效算法。但是当出现这种情况时,您可能需要更喜欢一种特定的算法。一般来说,您学习这些概念只是为了了解当前的算法是如何开发的。

,

使用std::sort

标准库经过超优化,std::sort 实际上会根据数据大小使用不同的算法。

当然,作为练习,通读所有排序算法并了解它们的工作原理仍然值得。

编辑:Andrei Alexandrescu 的这个演讲很好地探索了实现快速排序算法的复杂性:https://www.youtube.com/watch?v=FJJTYQYB1JQ 但是,请注意,这是一个非常高级的算法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。