永发信息网

C语言数组程序设计

答案:3  悬赏:30  手机版
解决时间 2021-05-14 18:51
有一个整数数组A[N],N 为一已知常量,试编写程序,用尽量少的运行时间和尽量少的存储空间,把数组的所有奇数移到所有偶数左边。
最佳答案

可以用与快排一个方法做吧, 既然快排可以小于枢纽排到左边,大于在右边, 同样就可以奇左偶右是不?



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;



} 

全部回答

我在楼上诸位的基础上修改了下,用两个数组实现

#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;

}

#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++代码,发上来,顺便看看别人有没有更优化的代码
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
她说让我好好学习,好好生活,把她彻底忘记,
大祥区湘味跳跳蛙怎么去啊,谁知道地址啊
累了,又有誰知啊?
开庭后判决书多久下来,一般的刑事案件从法院
跪求神奇宝贝第一部主题曲
谁有杰伦的超帅QQ头像?
谁赠送我个游戏人生
2K11的价格大概是多少
镇平县柒牌(校场南路)地址在什么地方,想今天
在闵行区有没有学习化新娘妆的学校,最好专业
现在冒险岛能不能创建个能升到200的人物
CF幽灵模式如何跳无声?
2010石家庄动漫节时间地点
参公考试考什么,海关类公务员考试需准备什么
肇源县百事汇通快递在哪里啊,我有事要去这里
推荐资讯
下歌的网址
Q吧要维修到什么时候
郾城区育才文化辅导在什么地方啊,我要过去处
飞飞里这种宠物怎么得?
沅陵县老医生健康大药房哪位知道具体地址啊
谁给我单机DNF下载的地址?
如何成为像你们一样的心理咨询师?
谁能解压缩包密码?要快!要快!着急!
高中标语励志,关于高中校园的励志标语,你怎么
寻找一篇外国名著?
人们为什么都喜欢瘦?
600161股票
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?