用C語言編程,實現調整數組,使奇數全部位於偶數前邊,
函數要求實現功能:調整數組使奇數全部都位於偶數前面。
要求:
輸入一個整數數組,實現一個函數,來調整該數組中數字的順序使得數組中所有的奇數位於數組的前半部分,所有偶數位於數組的後半部分。
思考,要想實現此功能,首先對函數數組進行遍歷,從兩頭進行,一個從前向後查看數組元素是否為奇數,一個從後向前查看數組元素是否為偶數,如果前為偶,後為奇則進行調換!
程序如下:
/*
**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;
}