单选题
现要对n个实数(仅包含正实数和负实数)组成的数组A进行重新排列,使得其午所有的负实数都位于正实数之前。求解该问题的算法的伪代码如下所示,则该算法的时间和空间复杂度分别为_______。
A、
O(n)和O(n)
B、
O(1)和O(n)
C、
O(n)和O(1)
D、
O(1)和O(1)
【正确答案】
C
【答案解析】
本题考查算法分析方法。 根据伪代码可知算法的基本思想,从前往后检查元素,若为负数继续向前检查;若遇到正数,则开始从后往前检查元素,若为正数则继续往前检查:若遇到负数则与前面遇到的正数进行交换。重复检查元素,所有元素检查完毕。根据该思想,可知每个元素检查一遍,因此算法的时间复杂度为线性时间,即O(n)。在该过程中,仅需要一个额外的辅助存储空间,以便进行元素的交换,因此空间复杂度为常数,即O(1)。
提交答案
关闭