调整数组使奇数全部都位于偶数前面。

调整数组使奇数全部都位于偶数前面。

输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

#include<stdio.h>
#include<stdlib.h>
void jiaohuan(int arr[],int i,int j)//交换奇数偶数
{
    int tmp = 0;
    tmp = arr[i];
    arr[i] = arr[j];
    arr[j] = tmp;
}
void odd_before(int arr[],int sz)
{
    int left = 0;
    int right = sz-1;//left指向第一个数,right指向最后一个数
    while(left<right)
    {
        while((left<right)&&(arr[left]&0x01))
        {
            left++;
        }//如果下标为left的数为奇数,left向后查找
        while((left<right)&&(!(arr[right]&0x01)))
        {
            right--;
        }//如果下标为right的数为偶数,right向前查找
    jiaohuan(arr,left,right);
    //交换left指向偶数,right指向奇数时的两个数
    }
}
int main()
{
    int arr[] = {1,2,3,4,5,6,7};
    int sz = sizeof(arr)/sizeof(arr[0]);//计算数组长度
    int i = 0;
    odd_before(arr,sz);
    for(i=0;i<sz;i++)
    {
        printf("%d ",arr[i]);
    }
    system("pause");
    return 0;
}

实现结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/perfectmatch_G/article/details/80039297