调整数组使奇数全部都位于偶数前面。

来源:互联网 发布:淘宝购物车怎么扩容 编辑:程序博客网 时间:2024/05/17 04:11

题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

#include<stdio.h>#include<stdlib.h>#include<assert.h>#pragma warning(disable:4996)static void switchdata(int *x, int *y){*x ^= *y;*y ^= *x;*x ^= *y;}static void show(int *arr, int ret){int i = 0;for (; i < ret; i++){printf(" %d", arr[i]);}printf("\n");}void switches(int *arr, int ret){assert(arr);assert(ret);int *start = arr;int *end = arr + ret - 1;while (start < end){if (!(*start & 1)&&(*end&1)){switchdata(start,end);start++;end--;continue;}if (*start&1){start++;}if (!(*end&1)){end--;}}}int main(){int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };int ret = 0;ret = sizeof(arr) / sizeof(arr[0]);show(arr, ret);switches(arr,ret);show(arr,ret);system("pause");return 0;}