[C语言]调整数组使奇数全部都位于偶数前面。

#define _CRT_SECURE_NO_WARNINGS 1
//调整数组使奇数全部都位于偶数前面。
#include<stdio.h>
void adjust(int arr[],const int len)
{
 int i = 0;
 int j = 0;
 int tmp = 0;
 //冒泡排序
 for(i=0; i<len-1; i++)
 {
  for(j=0; j<len-1-i; j++)
  {
   if(arr[j]%2 != 0)
   {
    tmp = arr[j];
    arr[j] = arr[j+1];
    arr[j+1] = tmp;
   }
  }
 }
}
int main()
{
 int arr[9] = {1,2,3,4,5,6,7,8,9};
 int sz = 0;
 int i = 0;
 sz = sizeof(arr)/sizeof(arr[0]);
 adjust(arr,sz);
 for(i=0; i<sz; i++)
 {
  printf("%d",arr[i]);
 }
 return 0;
}
//方法二:(折半)
#include<stdio.h>
void adjust(int arr[],int len)
{
 int left = 0;
 int right = len - 1;
 while(left < right)
 {
  //从左边开始找第一个偶数
  while((left < right) && (arr[left] % 2 != 0))
  {
   left++;
  }
  //从右边开始找第一个奇数
  while((left < right) && (arr[right] % 2) == 0)
  {
   right--;
  }
  if(left < right)
  {
   int temp = arr[left];
   arr[left] = arr[right];
   arr[right] = temp;
  }
 }
}
int main()
{
 int i = 0;
 int arr[10] = {1,2,3,4,5,6,7,8,9,10};
 int len = sizeof(arr)/sizeof(arr[0]);
 adjust(arr,len);
 for(i=0; i<len; i++)
 {
  printf("%d",arr[i]);
 }
 return 0;
}

猜你喜欢

转载自blog.csdn.net/Code_beeps/article/details/83551102