我想出了一个解决另一个 SO问题的想法,并希望在确定函数的复杂性方面得到一些帮助,因为我对此不太了解。我猜测“未分类”每个块会是正确的吗?那么将一个块的最后一个块与另一个块的头部进行比较的 sortBy 函数的复杂性是多少?我的猜测是该函数只会比较对,而不需要根据总列表查找一个块的顺序。此外,Haskell 是否会因为整体功能的延迟优化而提供不同的复杂性?提前致谢!O (n * log 2)
import Data.List.Split (chunksOf)
import Data.List (sortBy)
rearrange :: [Int] -> [Int]
rearrange = concat
. sortBy (\a b -> compare (last a) (head b))
. map (sortBy (\a b -> compare b a))
. chunksOf 2