现要对n个实数(仅包含正实数和负实数)组成的数组A进行重新排列,使得其中所有的负实数都位于正实数之前。求解该问题的算法的伪代码如下,则该算法的时间和空间复杂度为(65)。 i=0;1=n一1 whlle1

admin2019-04-22  36

问题 现要对n个实数(仅包含正实数和负实数)组成的数组A进行重新排列,使得其中所有的负实数都位于正实数之前。求解该问题的算法的伪代码如下,则该算法的时间和空间复杂度为(65)。
i=0;1=n一1
whlle1<]d0
whileA<0d0
i=i+1:
whileA[j1>0do
j=j一1;
ifi交换A和A[j]

选项 A、Θ(n)和Θ(n)
B、Θ(1)和Θ(n)
C、Θ(n)和Θ(1)
D、Θ(1)和Θ(1)

答案C

解析 算法中用到了两个辅助变量i和.i,算法的空间复杂度为0(1)。在重新排列过程中,从数组的两端进行比较,从i=0开始判断A是否为负数,i为负数的时候,i=i+1,直到A为正数:从j=n一1开始判断A是否为正数,如果为正数,j=i—1,直到A为负数。当i和A[j]的值。数组A中的元素个数为n,A<0和A[j]>0的比较次数共为n+2,i=i+1和j=j一1执行的次数最多为n+2次,if语句中的i
转载请注明原文地址:https://kaotiyun.com/show/0iRZ777K
0

最新回复(0)