在一个数组中,让奇数在偶数前面

将前面的偶数依次往后放
优点:通俗易懂
不足:后面的地址是非法访问,偶数排放的位置很随机。
(目前还不能很好解决该问题)

#include <stdio.h>

void print(int arr[], int sz)
{
    
    
  int i = 0;
  for (i = 0; i < sz; i++)
    printf("%d ", arr[i]);
}

int *move(int arr[], int k, int sz)
{
    
    
  int j = 0;
  for (j = k; j < sz; j++)
  {
    
    
    arr[j] = arr[j + 1];
  }
  return arr;
}

int main()
{
    
    
  int i = 0;
  int arr[] = {
    
    1, 2, 3, 4, 5, 6, 7, 8, 9,10};
  int sz = sizeof(arr) / sizeof(arr[0]);
  for (i = 0; i < sz; i++)
  {
    
    
    if (arr[i] % 2 == 0) //判断是否为偶数
    {
    
    
      arr[sz] = arr[i]; //把i的值放在arr[sz-1]后面
      move(arr, i, sz); //i后面的值依次往前移动一位
    }
  }

  print(arr, sz);
  return 0;
}

猜你喜欢

转载自blog.csdn.net/and_what_not/article/details/114260732