1. 程式人生 > >使一個數組中的全部奇數位於偶數之前

使一個數組中的全部奇數位於偶數之前

使一個數組中的所有奇數都位於偶數之前, 用變數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;
 }