欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

用C语言编程,实现调整数组,使奇数全部位于偶数前边,

程序员文章站 2022-12-10 22:54:16
函数要求实现功能:调整数组使奇数全部都位于偶数前面。 要求: 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的...
函数要求实现功能:调整数组使奇数全部都位于偶数前面。

要求:

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

 

思考,要想实现此功能,首先对函数数组进行遍历,从两头进行,一个从前向后查看数组元素是否为奇数,一个从后向前查看数组元素是否为偶数,如果前为偶,后为奇则进行调换!

程序如下:

 

/*
**2.调整数组使奇数全部都位于偶数前面。
** 题目:
**输入一个整数数组,实现一个函数,
**来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
**所有偶数位于数组的后半部分。
*/

#include<stdio.h>
#include<stdlib.h>
void adjust_arr(int arr[], int size)
{
    int temp; int i, j;
    /*将奇位数放在前,偶位数放在后*/
    //if (size % 2 == 1)
    //{
    //  i = 1; j = size-1;
    //}
    //else
    //{
    //  i = 1; j = size - 2;
    //}
    //for (; i <= j; i += 2, j -= 2)
    //{
    //  temp = arr[i];
    //  arr[i] = arr[j];
    //  arr[j] = temp;
    //}

    /*将奇数放在前,偶数放在后*/
    for (i = 0,j = size-1; i <j; )
    {
        if ((arr[i] % 2 == 0) && (arr[j] % 2 == 1))     //如果奇数在后,偶数在前,则进行调换
        {
            temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        if (arr[i] % 2 == 1)   //如果arr[i]为奇数,i++
            i++;
        if (arr[j] % 2 == 0)   //如果arr[j]为偶数,j--
            j--;
    }
}

int main()
{
    int arr[] = {  2, 3, 4, 5, 6, 7, 10,11,12,13,14,15,16,8, 9 ,17,18,19,20};
    int i;
    int size = sizeof(arr) / sizeof(arr[0]);
    adjust_arr(arr, size);    //函数调用,队数组进行排序,
    for (i = 0; i < size; i++)
        printf("%d ",arr[i]);
    printf("\n");
    system("pause");
    return 0;
}