题目:
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
#include<stdio.h> #include<stdlib.h> void move_arr(int arr[], int sz) { int*left = arr; int*right = arr + sz - 1; while (left < right) { while ((left < right) && (*left) % 2 == 1) { left++; } while ((left < right) && (*right) % 2 == 0) { right--; } if (left != right) { int tmp = *right; *right = *left; *left = tmp; left++; right--; } } } int main() { int i = 0; int arr[] = { 5, 2, 3, 4, 1, 6 }; move_arr(arr, sizeof(arr) / sizeof(*arr)); for (i = 0; i < sizeof(arr) / sizeof(*arr); i++) { printf("%d ", arr[i]); } printf("\n"); system("pause"); return 0; }
结果;
5 1 3 4 2 6
请按任意键继续. . .