C语言数组程序设计
答案:3 悬赏:30 手机版
解决时间 2021-05-14 18:51
- 提问者网友:精神病院里
- 2021-05-14 00:51
有一个整数数组A[N],N 为一已知常量,试编写程序,用尽量少的运行时间和尽量少的存储空间,把数组的所有奇数移到所有偶数左边。
最佳答案
- 五星知识达人网友:低血压的长颈鹿
- 2021-05-14 02:04
可以用与快排一个方法做吧, 既然快排可以小于枢纽排到左边,大于在右边, 同样就可以奇左偶右是不?
int odd_right(int A[], int N) // 返回奇数元素个数
{
int i = 0, j = N - 1;
while(i < j)
{
for(; i < N && !odd(A[i]); ++i) ; // 找到左边第一个偶数
for(; j >= 0 && odd(A[i]); --j) ; //找到右边第一个奇数
if(i < j)
{
swap(A + i, A + j); ++i, --j;
}
else break;
}
return i;
}
全部回答
- 1楼网友:酒醒三更
- 2021-05-14 03:29
我在楼上诸位的基础上修改了下,用两个数组实现
#include <iostream.h> #include <stdio.h> #define N 10 int main() { int a[N],b[N],i,j; int n=9; int m=0; cout<<"请给数组a赋值"<<endl; for(i=0;i<N;i++) cin>>a[i]; for(j=0;j<N;j++) { if(a[j]%2) { b[m]=a[j]; //奇数在b数组中正着输入 m++; } else { b[n]=a[j]; //偶数在b中倒着输入 n--; } } for(i=0;i<N;i++) cout<<b[i]<<" "; return 0;
}
- 2楼网友:神也偏爱
- 2021-05-14 02:15
#include<iostream>
#define N 10
using namespace std;
int main()
{
int a[N],b[N],c[N],i,j=0;
for(i=0;a[i];i++)
cin>>a[i];
for(i=0;a[N];i++)
{
if(a[i]%2)
{
b[j]=a[i];
j++;
}
else
{
c[j]=a[i];
j++;
}
}
for(i=0;b[i];i++)
cout<<b[i];
for(i=0;c[i];i++)
cout<<c[i];
return 0;
}
这是C++代码,发上来,顺便看看别人有没有更优化的代码
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯