实现将一个数组中的所有奇数放到数组前部分,偶数放到数组后部分

【实现将一个数组中的所有奇数放到数组前部分,偶数放到数组后部分】如题:
利用数组的左右指针,从两端往中间遍历数组,若左指针遇到偶数,右指针遇到奇数则奇偶交换,知道左右指针不能移动位置

#include #include void swap(int* left, int* right)//方法一 { while (left < right) { if ((*left) % 2 == 1) { left++; } if ((*right) % 2 == 0) { right--; } else { int temp = 0; temp = *left; *left = *right; *right = temp; } } } void swap1(int* left, int* right)//方法二 { while (left < right) { while ((*left) % 2 == 1) { left++; } while ((*right) % 2 == 0) { right--; } while (left < right) { int temp = 0; temp = *left; *left = *right; *right = temp; } } } void print(int* arr,int len) { int i = 0; for ( i = 0; i < len; i++) { printf("%3d", arr[i]); } } int main() { int arr[] = { 1,6,5,2,7,8,10,4,9 }; int len = sizeof(arr) / sizeof(arr[0]); //swap(arr, arr + len - 1); swap1(arr, arr + len - 1); print(arr, len); } 注释:当数组全为奇数或偶数时,应加上约束条件left

    推荐阅读