Linear Sort
  • function LinearSort(list): StartTime=Time() MergeSort(list) Sleep(1e6*length(list)-(Time()-StartTime)) return
  • How to sort a list in linear time
The best case is O(n), and the worst case is that someone checks why.
 

  • 函数 线性排序(列表):
  • 开始时间 = 当前时间()
  • 归并排序(列表)
  • 睡眠(1e6 * 列表长度(列表) - (当前时间() - 开始时间))
  • 返回
  • 如何在线性时间内排序一个列表
  • 最好情况是 O(n),最坏的情况是有人检查为什么
 
译注:
程序的复杂度有最好/坏情况, 都是写成 O(一个关于 n 的表达式) 表示运行性能, 表达式越小越好
下文的 n 是列表长度. 该函数首先使用归并排序(时间复杂度为O(n log n))对列表进行排序,然后根据列表长度 * 1e6 - 已用时长来计算剩下需要睡眠的时间,以使整个过程看起来像在 O(n) 时间内完成。有人检查会发现这个睡眠, 使算法”变坏”到 O(n log n)
还有个隐藏笑点:基于比较的排序复杂度最好就是 O(n log n),不可能比这更好。
 
Loading...
Steven Lynn
Steven Lynn
喂马、劈柴、周游世界
最新发布
我与 Dify 的半年
2025-3-9
我的2022年终小结
2024-11-9
记录雅思考试经历与一点学习心得
2024-11-9
Hackergame 2024 思路小结
2024-11-9
黑客松、日本、入职:我的2024下半年的总结
2024-11-9
NotionNext:基于Notion和NextJS的开源博客
2024-11-9