在对一个无序数组进行排序时,如果要求空间复杂度为O(1),且排序过程不依赖于比较操作,那么以下哪种排序算法可能适用?
答案解析
核心考点说明:本题考察常见排序算法的空间复杂度、比较操作依赖性以及适用场景。
解题思路分析:题目要求空间复杂度为O(1),这排除了需要额外空间的排序算法。同时,要求排序不依赖比较操作,意味着需要选择基于其他原理的排序算法。
选项分析:
A:错误。快速排序的空间复杂度是O(log n)(平均情况下),因为需要递归调用栈空间,而且依赖比较操作。
B:错误。归并排序的空间复杂度是O(n),因为需要额外的辅助空间进行归并操作,并且依赖比较操作。
C:正确。计数排序的空间复杂度取决于元素的范围,若元素的范围有限且不远超n,则可以做到O(1)。计数排序不基于比较,是基于元素的值进行统计和排序。
D:错误。堆排序的空间复杂度是O(1),但它依赖比较操作。
易错点提醒:容易混淆各种排序算法的空间复杂度和操作特性。计数排序在某些情况下可以做到O(1)的空间复杂度,但它的限制条件也很多。
正确答案:C