输入一个整数数组,实现一个函数,
来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
所有偶数位于数组的后半部分。
思路:
建立两个指针(start,end)分别指向数组的第一个元素和最后一个元素.
1判断指向首地址的元素是不是奇数(模2),若是则指针后移,若不是则跳出循环;
2之后再判断指向末地址的是不是偶数,若是则指针后移,若不是则跳出循环;
3交换两个指针所指向的元素,即奇数放在前,偶数放在后
4循环1,2,3直到start不在小于end
#include<stdio.h>
#include<stdlib.h>
//奇数偶数位置排列函数
void Odd_Even(int a[10], int length) {
int* start = &a[0];
int* end = &a[length - 1];
int temp = 0; //临时变量
while (start < end) {
while ((*start) % 2 == 1) {
start++;
}
while ((*end) % 2 == 0) {
end--;
}
if (start < end) {
temp = *start;
*start = *end;
*end = temp;
}
}
for (int i = 0; i < length; i++) {
printf("%d ", a[i]);
}
}
//主函数
int main() {
int a[10] = { 1,2,4,2,5,5,7,8,9,3 };
int length = sizeof(a) / sizeof(a[0]);
Odd_Even(a,length);
system("pause");
return 0;
}
测试结果