【正确答案】
【答案解析】采用类似于快速排序中的划分思想。算法如下:
void part(KeyType A[], int n){
int i-1; j=n;
KeyType temp;
while(i<j){
while(i<j && A[j]>=0) j--; //从右向左找负数
while(i<j && A[i]<0) i++; //从左向右找非负数
if(i<j){ //交换元素A[i]和A[j]
temp=A[i]; A[i]=A[j]; A[j]=temp;
i++; j--;
}
}
}
该算法的时间复杂度为O(n)。