中易网

如何编程实现:数组奇数在前面 偶数在后面

答案:3  悬赏:50  
解决时间 2021-02-15 23:09
如何编程实现:数组奇数在前面 偶数在后面
最佳答案
bool isSwap(int a,int b) // 是否要交换
{
if (a %2==0 || b%2 !=0)
return(true); // 前偶,后奇,要交换
if (a %2!=0 || b%2 ==0)
return(false); // 前奇,后偶,不交换
return (a>b); // 同奇同偶,前大后小,要交换
}
void swap(int * a,int * b) // 交换 *a,*b
{
int t=*a;
*a=*b;
*b=t;
}
void oddSort(int d[],int n) // 特殊冒泡排序 ,奇数优先在前
{ int i,j;
for ( i=0;i<n-1;i++)
for ( j=i+1,j<n;j++)
if (isSwap(d[i],d[j])) // 符合交换
swap(&d[i],&d[j]); // 交换
}
程序中再调用一个上面的子程序就OK了,很短很清晰
全部回答
你那个程序逻辑太混乱, 所以嵌套判断的时候,把自己也给绕进去了,其实就应该是a数组,两个变量i, j,i 对应奇数,j对应偶数,i从头,j从尾相向而行, 一偶一奇时,互换位置;否则偶数i ,奇数j--(继续相向而行),代码修改如下: void assort(int a[], const unsigned int n) { int i, j, t; i = 0; j = n-1; while (i<j) { if (a[i]%2 == 0 && a[j]%2 != 0) { t = a[i]; a[i] = a[j]; a[j] = t; j--; i ; } else if (a[j]%2 == 0) j--; else if (a[i]%2 !=0) i ; } } 把接口稍微修改了一下,用了const unsigned int, 以表示n是不能变的; 其实你完全可以用C的标准库函数qsort, 自己写的compare函数调整一下即可。 如下: int compare (const void * a, const void * b) { if ( (*(int*)a % 2 == 0) && (*(int*)b % 2 != 0) ) return 1; if ( (*(int*)a % 2 != 0) && (*(int*)b % 2 == 0) ) return -1; else return ( *(int*)a - *(int*)b ); } 测试例子: int main(int argc, char *argv[]) { int data[] = {10, 8, 7, 6, 5, 2, 4, 3, 1, 9}; size_t data_len; int i; data_len = sizeof(data)/sizeof(data[0]); qsort (data, data_len, sizeof(int), compare); for (i=0; i<data_len; i ) printf ("%d ",data[i]); return 0; } 输出:完全奇偶分开并且升序排序的结果: 1 3 5 7 9 2 4 6 8 10
你的输出有问题,数组的输出应该用for循环
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我在我的电脑F盘里面建了两个文件夹,分别是
hololens怎样实现手势识别
关于起点网的VIP章节下载到手机上.
为什么古筝比古琴更广为人知 甚至很多人不认
崂山白花蛇草水难喝为什么还生产
有没有人去过日月湖生态园啊,我同学让我去她
霹雳侠影之轰霆剑海录闽南语下载链接!!!跪
为什么电脑跳高了hz为什么会出现暂不支援
\"策划部\"的英文翻译是什么?
页数多图片多的书籍排版用什么软件
代伟卷馍我想知道这个在什么地方
!!!!有什么实用性强的学科??
内外螺纹标注差别是什么?
诗经有多少首
广州市快递行业协会怎么去啊,有知道地址的么
推荐资讯
对巴子村在什么地方啊,我要过去处理事情
中通快递如何收费安徽到黑龙江
俄罗斯美女是不是老了就丑了
民航售票(石油大街店)怎么去啊,我要去那办事
东榆树林我想知道这个在什么地方
JS中null和undefined值的区别
三河市蔡官营村民委员会在什么地方啊,我要过
顺联集团地址在哪,我要去那里办事
玉海五金日杂经销部我想知道这个在什么地方
放射科住院部我想知道这个在什么地方
“馈”怎么组词?
小悦棋牌地址在哪,我要去那里办事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?