1
我想知道sort_by
背後的排序算法是什麼,這很複雜。`sort_by`的複雜性是什麼?
我正在排序一個嵌套數組,這就是它所做的;從:
arr = [[0,2],[1,1],[3,5],[4,2]]
我排序它,
arr = arr.sort_by{|x,y|y}
並且變得:
arr = [[1,1],[0,2],[4,2],[3,5]]
我想知道sort_by
背後的排序算法是什麼,這很複雜。`sort_by`的複雜性是什麼?
我正在排序一個嵌套數組,這就是它所做的;從:
arr = [[0,2],[1,1],[3,5],[4,2]]
我排序它,
arr = arr.sort_by{|x,y|y}
並且變得:
arr = [[1,1],[0,2],[4,2],[3,5]]
Ruby使用快速排序的實現。因此它平均爲'O(n log n)'。 – spickermann
通常,當您考慮使用'sort_by'而不是'sort'時,那就是當您在塊中執行一些不重要的計算時。在這種情況下,塊中的計算是整個操作複雜性的決定因素,排序算法本身沒有顯着的貢獻。重要的是該塊的評估次數,並且在這方面,「sort_by」比「sort」更快。 – sawa
@sawa - 只要塊中的計算對於集合的大小來說具有恆定的複雜性,它就不會影響整體的排序複雜性... –