在像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. 排序算法最適合對排序數組進行排序
- 2. 使用javascript或jquery進行div排序?
- 3. 項目進行排序算
- 4. 使用哪種算法進行字母排序?
- 5. 使用Jaro-Winkler距離算法進行排序?
- 6. 使用STL對結構進行排序:算法
- 7. Java算法 - 使用ArrayList進行合併排序
- 8. 如何正確使用選擇排序算法對列表進行排序?
- 9. 使用will-paginate排序算法排序
- 10. 排序算法排序使用模板
- 11. 使用Elasticsearch對特定值進行排序或排序5
- 12. 排序算法 - 使用Javascript
- 13. 使用spark進行排序
- 14. 使用SimpleAdapter進行排序
- 15. 使用IComparer進行排序
- 16. 使用MongoEngine進行排序?
- 17. 無法使用排序對數據進行排序
- 18. 對排名結果進行meta排序的算法
- 19. 通過reddit排名算法對mongodb進行排序
- 20. 使用Perl以升序或降序對單列進行排序
- 21. 使用Criteria API進行嵌套字段排序時缺少行
- 22. 您將使用什麼排序算法對大型,幾乎排序的列表進行排序
- 23. 用4個選項對數組進行排序的算法
- 24. Angular Datatable - 使用「Angular Way」刪除行進行篩選或排序
- 25. 字符串進行排序按字母順序算法的c#
- 26. 算法排序
- 27. 快速排序算法改進
- 28. 在使用lucene 4.0進行索引編排時進行排序
- 29. 按Linq排序進行數學計算
- 30. 使用JTable rowFilter進行高行排序
「API或算法」是一個荒謬的問題,他們不是替代品。 API是圖書館面向公衆的界面。算法是解決問題的分步說明。庫使用API和算法。 'sort'實現了一種排序算法(稱爲「timsort」),並提供了一個用於調用它的API。 –