一个线性表中的数据元素为正整数或负整数。试设计一算法,将正整数和负整数分开,使线性表的前一部分的数

一个线性表中的数据元素为正整数或负整数。试设计一算法,将正整数和负整数分开,使线性表的前一部分的数据元素为负整数,后一部分的数据元素为正整数。不要求对这些元素有序,但要求尽量减少交换的次数。怎么做???

int[]a=new int[]{2,-8,5,-9,-4};
int x=a.length-1;
for(int i=0;i<a.length;i++)
{
if(a[i]>=0){//当前数是正数
while(x>i && a[x] >= 0){x--;}//寻找一个小于0的数
if(x>i){//是不是有效的比较
int t=a[i];a[i]=a[x];a[x]=t;//交换
x--;
}else{break;//没有需要交换的了 结束循环
}
}
}
温馨提示:答案为网友推荐,仅供参考
相似回答