使一个数组中的所有奇数都位于偶数之前, 用变量left 来保存数组左边的偶数, 用变量 right 来保存数组右边的奇数, 建立一个循环, 循环的结束条件是left < right
在循环之中分别对 left 与 right 进行判断, 如果 left 里的元素为偶数, right 里的元素为偶数, 则将 left 与 right 里的元素进行调换. 如果不是则将 left ++, right –
具体代码如下
#include<stdio.h>
#include<stdlib.h>
int main(){
int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int len = sizeof(arr) / sizeof(arr[0]); 计//算数组的长度
int left = 0;
int right = len-1;
for (int i = 0; i < 10; ++i){
printf("%d ", arr[i]);
}
printf("\n");
while (left < right){
while (left < right && arr[left] % 2 != 0){ //从左边开始寻找第一个奇数
++left;
}
while (left < right && arr[right] % 2 == 0 ){ //从右边开始寻找第一个偶数
--right;
}
if (left < right){ //将找到的奇数和偶数进行交换
int tem = arr[left];
arr[left] = arr[right];
arr[right] = tem;
}
}
printf("------------------------------------------\n");
for (int i = 0; i < 10; ++i){
printf("%d ", arr[i]);
}
printf("\n");
system("pause");
return 0;
}