【发布时间】:2014-10-21 12:53:26
【问题描述】:
我遇到过这个问题:有一个包含随机数的给定数组。我必须以这样的方式对这个数组进行排序,首先我将得到偶数,然后按照它们出现的确切顺序排列奇数。
例如输入:2,3,4,2,9,2,1,7,3,输出应为:2,4,2,2,3,9,1,7,3。
问题是我必须在没有任何额外内存的情况下执行此操作。如果我没有这个条件,2 个不同的偶数/奇数数组就可以了。
有什么想法吗?
编辑:好的,我必须补充一点,我是一个完整的新手。 另外,这是我的失败尝试:
cin>>n;
for (i=0;i<n;i++)
cin>>a[i];
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
if (a[j]%2==1 && a[j+1]%2==0)
{
aux=a[j];
a[j]=a[j+1];
a[j+1]=aux;
}
}
}
for (i=0;i<n;i++)
cout<<a[i]<<" ";
【问题讨论】:
-
C 和 C++ 是两种不同的语言。你用的是哪个?
-
那么你不应该标记 C++。
-
到目前为止,我只使用了两个不同的数组,并在第一个数组中插入偶数,在第二个数组中插入奇数。然后我就把它们放在一起
-
使用任何具有内存 O(1) 的稳定排序,对于值使用
value %2... 正如 @P0W 建议的那样。我什至不知道冒泡排序会起作用。