You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

选择排序的时间复杂度为什么不是n!(n阶乘)?

为什么选择排序时间复杂度是O(n²)而非O(n!)

核心原因是你混淆了「总操作数的计算逻辑是加法还是乘法」,两者的量级天差地别:

  • 选择排序每一轮的比较操作是累加计数的:你提到的迭代n次,每轮比较次数依次是n、n-1、n-2...1,总比较次数是等差数列求和:
    n + (n-1) + (n-2) + ... + 1 = n*(n+1)/2
    这个式子展开后是 (n² + n)/2,大O时间复杂度会忽略低阶项n和常数系数1/2,最终只保留最高阶的n²项,所以复杂度是O(n²)。
  • n!是阶乘,对应的是操作数相乘的场景:比如穷举n个元素的全排列,第1层有n种选择、第2层有n-1种选择...最后1层有1种选择,总路径数是n * (n-1) * ... *1 = n!,这种乘法逻辑才会得到n!的量级,和选择排序的加法计算逻辑完全不同。

内容的提问来源于stack exchange,提问作者Loïc Rutabana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:45:05