题目:
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
#include<iostream>
using namespace std;
void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
void change(int *arr, int len)
{
int *start = arr;
int *end = arr + len - 1;
while (start < end)
{
while (start < end && (*start & 1) != 0)//第一个指针所指的数为奇数,指针后移
{
start++;
}
while (start < end && (*end & 1) == 0) //第二个指针所指的数为偶数时,指针前移
{
end--;
}
if (start < end)
{
swap(*start, *end);
}
}
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8};
change(arr,sizeof(arr)/sizeof(int));
cout << "奇数偶数交换后,arr的序列为:" << endl;
for (int i = 0; i < sizeof(arr) / sizeof(int); ++i)
{
cout<< arr[i]<<" ";
}
cout << endl;
return 0;
}