使一个数组中的全部奇数位于偶数之前

使一个数组中的所有奇数都位于偶数之前, 用变量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;
 }

猜你喜欢

转载自blog.csdn.net/weixin_42485448/article/details/83780306