在像Python这样的编程语言中哪个会有更好的效率?如果我使用排序算法像合并排序排序数组或如果我使用内置的API如sort()排序数组?如果算法是无关的编程语言,那么什么是算法的优势内置的方法或API的使用API进行排序或算法?
1
A
回答
5
为什么要使用公共API:
- 内置的方法由经验非常丰富,其中被写入和审查编码器,并且投入了大量精力来优化它们以达到效率。
- 由于内置方法是公共API,因此它也意味着它们不断被使用,这意味着您可以进行大规模的“免费”测试。你更有可能在公共API中发现问题,而不是在私人API中发现问题,一旦发现问题 - 它将为你解决。
- 不要重新发明轮子。有人已经为你编程,使用它。如果您的配置文件说有问题,请考虑替换它。之前没有。
为什么使用定制方法:
- 这就是说,公共API是一般情况。如果您需要针对您的方案特定的东西 ,您可能会发现一个解决方案将使效率更高,但实际上 会比已经优化的通用公共API要花费相当多的时间。
TL;博士:使用公共API,除非你:
- 需要它,并能够承受大量的时间来取代它。
- 知道你在做什么很好。
- 打算维护它,并对其进行强大的测试。
+0
这意味着如果我被要求在一些有竞争力的编程中对数组进行排序,我可能更喜欢API而不是算法? – Manel
+1
@Manel依赖于竞争规则。如果比赛的目的*是实施该算法,那么你可能不应该使用内建的方法。 ;) –
1
这些库通常使用经过良好测试和正确优化的algorythms。例如Python使用Timsort其中:
- 是在最坏的情况下
- 需要O(即比较等于被保留元素的顺序)一个稳定的排序(N日志n)的比较来进行排序n个元素的数组
- 在最好的情况下(当输入已经排序)中运行的线性时间
除非你有特殊的要求,让你知道,您的特定数据集一个排序algorythm会给你可以使用最好的结果标准库的实现。
另一个原因手工打造排序,显然是为学术目的...
相关问题
- 1. 使用javascript或jquery进行div排序?
- 2. 项目进行排序算
- 3. 使用Jaro-Winkler距离算法进行排序?
- 4. 使用Elasticsearch对特定值进行排序或排序5
- 5. 排序算法 - 使用Javascript
- 6. 使用spark进行排序
- 7. 使用MongoEngine进行排序?
- 8. 使用集合的排序方法对JList进行排序
- 9. 使用Criteria API进行嵌套字段排序时缺少行
- 10. 在使用lucene 4.0进行索引编排时进行排序
- 11. 为一个已排序阵列的运行时间由选择排序算法进行排序Vs的时间为反转排序的数组进行排序
- 12. 使用先前计算的数据对Postgresql表进行排序
- 13. 如何使用Activerecord中的计算值进行排序?
- 14. 如何使用基于wink的REST API对dojox.grid.DataGrid进行排序?
- 15. 如何使用bigcommerce v2 api对客户列表进行排序
- 16. 如何使用新的Sitecore.Search API进行排序/过滤
- 17. 按字母顺序排序使用插入排序算法c#
- 18. 如何使用jQuery UI进行排序来排序第二行?
- 19. 使用和不使用java inbuild方法对DOB进行排序
- 20. 使用Levenstein对字符串数组进行排序算法结果
- 21. 在Python中实现遗传算法:使用健身对列表进行排序
- 22. 在队列上使用排序算法?
- 23. 排序算法没有使用compareTo
- 24. 排序structArray使用算法头
- 25. 对数组或数组进行排序?
- 26. 如何将我自己的排序算法与其他排序算法进行比较?
- 27. 使用JavaScript或jQuery对HTML内容进行排序
- 28. 使用Php(或java)对Div ID进行排序
- 29. 如何使用ASP Classic或jQuery进行选择排序?
- 30. iPhone - 使用ASIHTTPRequest对NSOperationsQueue或ASINetworkQueue进行翻转和排序
“API或算法”是一个荒谬的问题,他们不是替代品。 API是图书馆面向公众的界面。算法是解决问题的分步说明。库使用API和算法。 'sort'实现了一种排序算法(称为“timsort”),并提供了一个用于调用它的API。 –