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

求助:无临时存储版Python冒泡排序的最坏情况拷贝操作(空间复杂度)分析

无临时存储交换的冒泡排序:拷贝次数与最坏空间复杂度分析

先明确前提

你说的“无临时存储、直接交换相邻元素”的冒泡排序,应该是指用Python解构交换语法(arr[i], arr[i+1] = arr[i+1], arr[i])完成相邻元素交换的实现,下面基于这个场景分析:


拷贝操作次数分析

  1. 单次交换的拷贝量
    在Python中,x, y = y, x的执行逻辑是:
  • 先把右侧的两个值打包成一个临时元组,这一步会发生2次拷贝:将arr[i+1]和arr[i]的数值分别拷贝到元组的两个位置;
  • 再将元组的两个元素分别赋值回arr[i]和arr[i+1],这又是2次拷贝。
    所以单次相邻交换总共产生4次拷贝操作。
  1. 最坏情况的总拷贝次数
    冒泡排序的最坏场景是输入数组完全逆序,此时需要执行的交换次数为n*(n-1)/2(n为数组长度)。结合单次交换的4次拷贝,总拷贝次数为:
    4 * (n*(n-1)/2) = 2*n*(n-1)

最坏情况空间复杂度分析

空间复杂度衡量的是算法运行时所需的额外存储空间(不含输入数组本身的占用)。
虽然每次交换会临时创建一个存储两个元素的元组,但这个元组的大小是固定常数,不会随着输入规模n的增长而扩大。因此,无论最好还是最坏情况,这个版本的冒泡排序空间复杂度都是O(1),属于原地排序算法。

内容的提问来源于stack exchange,提问作者mrpotter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 11:13:16