您的位置:首页 > 其它

将数组中负数放在正数前面

2012-08-29 17:23 736 查看
方法一:从头扫描这个数组,每碰到一个正数时,拿出这个数字,并把位于这个数字后面的所有数字往前挪动一位。挪完 之后在数组的末尾有一个空位,这时把该正数放入这个空位。由于碰到一个正,需要移动O(n)个数字,因此总的时间复杂度是O(n2),空间复杂度为O(1)。

View Code

#include <iostream.h>
#include <string.h>

void fun4(int *a,int n)
{
if (NULL==a || n<=1)
{
return;
}
int num1=0,num2=0;
int *temp=new int
;
for (int i=0;i<n;i++)
{
if (a[i]<0)
{
temp[num1]=a[i];
num1++;
}
}
num2=n-num1;
if (num2<=0)
{
return;
}
num2=0;
for (i=0;i<n;i++)
{
if (a[i]>0)
{
temp[num1+num2]=a[i];
num2++;
}
}
memcpy(a,temp,sizeof(int)*n);
delete []temp;
}

void main()
{
int data[6]={1,1,15,3,5,12};
fun4(data,6);
for (int i=0;i<6;i++)
{
cout<<data[i]<<" ";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐