1.调整数组使奇数全部都位于偶数前面。
题目:
输入一个整数数组,实现一个函数,
来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
所有偶数位于数组的后半部分。
**解题思路:**循环的次数是一个问题,在交换完两个数之后应该再循环这个数,判断是不是偶数,当是偶数继续循环,如果循环退出条件为数组长度,最终循环完成会把偶数又换回到数组的前半部分,所以循环的退出条件也应该一起控制
int main() {
int buf[10] = { 0};//把数组全部初始化为0
int i = 0;
int len = 9;//数组的下标
for (i = 0; i < 10; ++i) {//循环输入数组
scanf("%d", &buf[i]);
}
for (i = 0; i <= len; ++i) {//循环条件是重点
if (buf[i] % 2 == 0) {
int tmp = buf[len];
buf[len] = buf[i];
buf[i] = tmp;//交换数组
len = len-1;//即控制循环跳出条件,又控制数组下边往前移动一.
i = i - 1;//因为不知道交换的元素是否为偶数,所以把这次循环再进行一次
}
}
for (i = 0; i < 10; ++i) {
printf("%d ", buf[i]);
}
return 0;
}