【发布时间】:2020-03-10 10:47:09
【问题描述】:
位排序的空间复杂度是多少?根据其最佳和平均情况,它是 O(n)。我想知道它的空间复杂度是多少
来源标题:位排序:排序的新技术
IEEE 研究只关注时间复杂度。
谢谢!
【问题讨论】:
标签: arrays sorting time-complexity space space-complexity
位排序的空间复杂度是多少?根据其最佳和平均情况,它是 O(n)。我想知道它的空间复杂度是多少
来源标题:位排序:排序的新技术
IEEE 研究只关注时间复杂度。
谢谢!
【问题讨论】:
标签: arrays sorting time-complexity space space-complexity
它是O(n),因为您没有在某个变量的函数中创建任何新元素。只需检查它的位表示和交换位置。所以基本上,在这些步骤中:
Step 1: convert all elements into binary form but converted elements are in same BIT
sequence form.
Step 2: find elements whose first leftmost bit is 1
Step 3: repeat step 2 to all selected elements until get single BIT sequence number
Step 4: swap selected BIT sequence with last element of an array
Step 5: repeat step2, step3 and step4 until all elements are sorted
Step 6: convert sorted BIT sequence elements into decimal number
理论上,当您可以直接访问给定元素的位值时,您没有任何新元素。
但是,如果您确实在其位表示中创建给定元素的深层副本,然后再次转换回元素,它仍然是O(n)(只是3*n)。现在与元素的深层副本交换,您仍然需要最多 n 新的内存空间(n 是当您在交换时总是在内存中占用新空间)。与深拷贝交换的最佳情况是您只需要一个内存空间。指针交换也是如此。所以总的来说,它是O(n)。
【讨论】: