为什么根据维基百科,冒泡排序的总 space 复杂度为 O(1)?

Why is the total space complexity of bubble sort O(1) according to Wikipedia?

基于This article on GeeksforGeeks and the questions posted on StackExchange and Quroa,算法的space复杂度是解决一个问题所需要的space,包括输入所需要的space,以及auxiliary space 是算法为了解决问题除了输入本身之外还需要的任何额外存储。

现在我知道冒泡排序的辅助 space 是 O(1) 因为它只需要一个变量来跟踪我们在列表排序时看到的交换次数(如果我错了请纠正我),但是为什么 Wikipedia 说冒泡排序的总 space 复杂度也是 O(1)?

考虑到输入本身,它不应该是 O(n) 吗?

术语space complexity定义了算法占用的额外内存量。如果你需要分配一个大小为 N 的数组,这意味着你的算法需要 O(N) 额外的 space 或更具体的辅助 space.

但是在冒泡排序的情况下,我们只能使用单个变量(用于交换目的)来实现。

所以总体 space 复杂度为 O(N),其中包括您的输入,总体辅助 space 复杂度为 O(1)

overall space complexity 的维基百科中,它定义了辅助 space。

why does Wikipedia say that the total space complexity of the bubble sort is O(1) as well?

抓得好!同时进行了更正。它现在表示总 space 复杂度为 O(n)。引用自右侧摘要面板:

Worst-case space complexity O() total, O(1) auxiliary

所以:

  • 输入的 space 复杂度为 O()
  • 另外算法=辅助需要O(1)space
  • 总共space使用了输入和辅助space,所以O()+O(1) = O()