算法题:奇偶分割数组

来源:互联网 发布:阿里域名注册 编辑:程序博客网 时间:2024/06/14 11:36

算法题:奇偶分割数组

问题描述:写一个函数分割一个整数数组,使得奇数在前,偶数在后,要求不是用额外空间,在原数组中完成。
格式:输入一个整数数组,最后输出分割后的数组
输入样例

[1,2,3,4]

输出样例

[1,3,2,4]

1.注意事项:

1.要求在原数组中完成操作,意味着数组需要进行依次左移或者右移操作来为改变位置的元素腾出插入空间,适合选用插入排序。
2.判断条件:奇数:k%2=1;偶数:k%2=0;
3.操作顺序,首先提取奇数到前面并排序,然后确认奇偶数组的范围,对奇数和偶数分别排序并输出

2.算法设计思路:

使用插入排序算法的思想,将所有的奇数元素提到数组前面,完成奇偶分割操作,然后确定奇偶数组的范围,分别对其进行从小到大的排序。

插入排序算法

int temp,i,j;for(i=0;i<n-1;i++){        temp=a[i+1];//暂存数据        j=i;    while(j>-1&&temp<a[j]){//右移腾出插入空间        a[j+1]=a[j];        j--;    }    a[j+1]=temp;}

奇偶分割数组代码

void oddEventArray(){int n=4;//数组大小int a[n];//初始化数组int odd=0;//记录奇偶元素个数//数组输入赋值printf("请输入数组:");int i,j,temp;for(i=0;i<n;i++){    if(i==0)        scanf("[%d,",&a[i]);    else if(i==n-1)        scanf("%d]",&a[i]);    else        scanf("%d,",&a[i]);        if(a[i]%2==1) odd++;//统计奇数个数}printf("奇数个数:%d,偶数个数:%d\n",odd,n-odd);//运用插入排序的思想对数组进行奇偶分割printf("奇偶分割:\n");for(i=0;i<n-1;i++){        temp=a[i+1];        j=i;    while(j>-1&&temp%2==1){//将奇数提到前面并对奇数排序        a[j+1]=a[j];        j--;    }    a[j+1]=temp;    show(a,n);}//对奇数排序for(i=0;i<odd-1;i++){        temp=a[i+1];        j=i;    while(j>-1&&temp%2==1&&temp<a[j]){        a[j+1]=a[j];        j--;    }    a[j+1]=temp;        show(a,n);}//对偶数排序for(i=odd;i<n-1;i++){        temp=a[i+1];        j=i;    while(j>odd-1&&temp%2==0&&temp<a[j]){        a[j+1]=a[j];        j--;    }    a[j+1]=temp;        show(a,n);}printf("最终结果:"); show(a,n);}//输出结果void show(int a[],int n){int i; for(i=0;i<n;i++){    if(i==0)        printf("[%d,",a[i]);    else if(i==n-1)        printf("%d]",a[i]);    else        printf("%d,",a[i]);}printf("\n");}

3.操作结果

这里写图片描述
这里写图片描述

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 交通事故案件律师 一般交通事故 交通事故律师费谁出 新交通事故责任认定 发生交通事故 交通事故案件咨询 重大责任事故罪量刑标准 交通事故中死亡赔偿 找交通事故专业律师 交通事故致死赔偿 交通事故致一人死亡 重大交通事故致人死亡 交通事故赔偿多少钱 交通事故损害 交通事故二次赔偿 交通事故死亡赔偿金额 在线交通事故法律咨询 交通事故死亡赔偿金如何分配 事故法律咨询 安全事故案例 交通事故轻微伤赔偿 交通事故赔偿网 交通事故人伤赔偿标准 交通事故请律师怎么收费 交通事故对方全责如何赔偿 安全责任事故 交通事故起诉书 交通事故案件律师收费 交通事故怎样索赔 交通事故怎样请律师 交通事故致人死亡赔偿 交通事故法律咨询在线 资深交通事故律师 交通事故死亡赔偿计算表 交通事故赔偿资料 交通事故请律师大概要多少钱 交通亡人事故赔偿 交通事故诉讼费 交通事故有人受伤 交通事故损失赔偿 交通事故事件