Kazuhiko Sakaguchi
Haskell Day 2021 お疲れさまでした。私の発表
結論としては、クイックソートの場合も実装が適切であれば
take k (sort xs)
in Haskell has O(n + k log k) time complexity の間にクイックソートと遅延評価が組み合わさったときの計算量がどうなるかというコメントが @as_capabl さんからあったと思うので、この場を借りて回答します。(チャットで書いたつもりが、リンクを含んでいたせいかアーカイブに残っていなかったもので……)結論としては、クイックソートの場合も実装が適切であれば
take k (sort xs)
の平均時間計算量を O(n + k log k) にできそうです。詳細な説明は Heinrich Apfelmus の投稿 や Peter Van Roy の講義動画 にありますが、いずれの場合も「平均時間計算量を考えているので、partition はリストを大体同じ長さの2つの部分に分割するものと考える」というクイックソートの平均時間計算量の証明でありがちなごまかし(だと自分は思っているんですが、これって妥当なんでしょうか?)が見られるので、証明をより精緻にする余地があると思います。