/* **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; }