算法 调整数组顺序,使得奇数在前偶数在后,分别保证奇数和偶数之间的相对位置不变
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法 调整数组顺序,使得奇数在前偶数在后,分别保证奇数和偶数之间的相对位置不变相关的知识,希望对你有一定的参考价值。
题目:输入一个整形数组,将数组重新排序,使得所有奇数在前偶数在后,并使奇数之间和偶数之间的相对位置爆出不变。
思想:从数组开头开始遍历所有数组。当碰到偶数时,将偶数打包,即记录到目前为止偶数的个数,把这些偶数看成一个整体;当碰到奇数时,将这个奇数与前面的偶数整体对调位置。
#include <stdio.h> #include <stdlib.h> void nuo(int *a,int j,int nu) //将奇数与前面所有偶数调换位置 { int b=a[j]; while(nu--){ a[j]=a[j-1]; j--; } a[j]=b; } int main() { int* a; int i = 0 ; int j = 0 ; int nu= 0 ; printf("请输入数组个数:\n"); scanf("%d",&i); a=malloc(sizeof(int)*i); printf("请输入数组,之间用逗号隔开:\n"); for(;j<i;j++){ scanf("%d,",&a[j]); } j=0; while(i!=j){ if(a[j]%2==1){ //这个数为奇数 nuo(a,j,nu); j++; } else{ //当这个数为偶数时,记录偶数个数 j++; nu+=1; } } printf("a[%d]=",i); j=0; while(i!=j){ printf(" %d",a[j++]); } printf("\n"); return 0; }
本文出自 “凌峰2019” 博客,请务必保留此出处http://lingfeng2019.blog.51cto.com/12741667/1910061
以上是关于算法 调整数组顺序,使得奇数在前偶数在后,分别保证奇数和偶数之间的相对位置不变的主要内容,如果未能解决你的问题,请参考以下文章