题目:输入一个整数数组,实现一个函数来调整该数组中的数字,使得所有奇数位于数组的前半部分,所有的偶数位于数组的后半部分。
代码:
1 #include<stdio.h> 2 bool isEven(int n) 3 { 4 return (n & 1) == 0; 5 } 6 void Reorder(int *pData, unsigned int length, bool(*func)(int)) 7 { 8 if (pData == NULL || length == 0) 9 return; 10 int *pBegin = pData; 11 int *pEnd = pData + length - 1; 12 while (pBegin < pEnd) 13 { 14 while (pBegin < pEnd && !func(*pBegin)) //如果前面的指针指向的数字是奇数 15 pBegin++; 16 while (pBegin < pEnd && func(*pEnd)) //如果后面的指针指向的数字是偶数 17 pEnd--; 18 if (pBegin < pEnd) 19 { 20 int temp = *pBegin; 21 *pBegin = *pEnd; 22 *pEnd = temp; 23 } 24 } 25 26 } 27 int main() 28 { 29 int a[8] = { 5, 1, 6, 2, 3, 7, 8, 10 }; 30 Reorder(a,8,isEven); 31 for (int i = 0; i < 8; i++) 32 printf("%3d",a[i]); 33 printf("\n"); 34 return 0; 35 } 36 /* 37 5 1 7 3 2 6 8 10 38 请按任意键继续. . . 39 40 */
时间: 2024-10-08 11:10:33