/*
调整数组使奇数全部都位于偶数前面。
题目:
输入一个整数数组,实现一个函数,
来调整该数组中数字的顺序使得数组
中所有的奇数位于数组的前半部分,
所有偶数位于数组的后半部分。
*/
#include<stdio.h>
#include<stdlib.h>
//划分奇偶函数
int divide_odd_even(int arr[],int len){
int *left = arr; //left指向数组第一个元素
int *right = arr + len - 1; //right指向数组末尾元素
int temp;
if (left == right){ //若数组为空
printf("数组为空.\n"); //打印输出提示信息
return 0;
} //1,2,3,4,5,6,7,8,9
while (left < right){ //若left小于right
if (*left % 2 != 0 && left < right){ //若left指向的内容为奇数,且left小于right
++left; //left向后移
}
if (*right % 2 == 0 && left < right){ //若right指向的内容为偶数,且left小于right
--right; //right向前移
}
//交换left和right指向的内容
temp = *left;
*left = *right;
*right = temp;
}
for (int i = 0; i < len; ++i){ //遍历数组
printf("%d ", arr[i]); //依次打印数组元素
}
return 1;
}
//主函数
int main(){
int arr[] = { 1,2,3,4,4,6,7,8,9 }; //定义数组并初始化
int len = sizeof(arr) / sizeof(arr[0]); //计算并记录数组长度
divide_odd_even(arr, len); //调用划分奇偶函数
system("pause");
return 0;
}