问题 多项选择题

已知数组A[1..n]的元素类型为整型int,设计一个时间和空间上尽可能高效的算法,将其调整为左右两部分,左边所有元素为负整数,右边所有元素为正整数。不要求对这些元素排序。

根据设计思想,采用C或C++或Java语言表述算法,关键之处给出注释;

答案

参考答案:用C语言算法描述如下:
void Adjust(int A[]){
//调整数组A,使得A的左边为负整数,右边为正整数
void Adjust(int A[]){ //调整数组A,使得A的左边为负整数,右边为正整数
int i=A, j=n, temp;
while(i<j){
while(A[i]<0 && i<j) i++; //A[i]为负整数时,i增A
while(A[j]>0 && i<j) j- -; //A[j]为正整数时,j减A
if(i<j){
temp=A[i]; A[i]=A[j]; A[j]=temp; //A[i]为正整数、A[j]为负整数时,交换
i++;
j- -;
}
}
}

填空题
单项选择题