【C语言】调整奇数偶数顺序

简介: 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。

内容:

       输入一个整数数组,实现一个函数,


       来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,


       所有偶数位于数组的后半部分。


解题思路:


       一般情况下数组中可能是奇偶交替,而题目中让我们把奇数全部挪到数组的前面,


       偶数全部挪到数组的后面。


       我们可以先从前往后找,碰到偶数停下。(如下图)

 接下来我们从后往前找,碰到奇数停下。

   

当前后分别停下时,交换各自位置上的数。(交换过的数用 ‘ ’ 加以显示)

重复上述过程,左边找偶数,后面找奇数

找到就交换

当前后交替时,查找结束

以上就是大致思路,接下来我们开始代码实现。


我们可以定义两个变量left和right,left赋值为0,right赋值为数组的大小-1。


接下来left开始往数组后面进行查找,没有碰见偶数就++,碰见偶数就停下

while ((left<right)&&arr[left] % 2 != 0)
  {
    left++;
  }

right也是一样,没有碰见奇数就++,碰见奇数就停下

while (arr[right] % 2 == 0)
  {
    right--;
  }

当left和right都停下,并且left<right时就交换该位置数的大小


当left大于right时,数组中的奇数和偶数就相当于又交换了回去

int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;

我们可以运代码下查看以下结果

1.arr[]={1,2,3,4,5,6,7,8,9,10}


3cb2663bab1cb9e16422861e91d1db48_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aiB5aiB5rKB5rKB,size_20,color_FFFFFF,t_70,g_se,x_16.png


2.arr[]={1,3,5,7,9}

46c7c31588d19024406fcc29199d89f6_e963b2caa96d4be6942a66bdea97341f.png


3.arr[]={2,4,6,8,10}

68787bd00e3257ae2606a9742cd56833_17a8f38618504d149b55a3bae9e40922.png

代码实现:

#include<stdio.h>
void move(int arr[], int sz)
{
  int left = 0;
  int right = sz - 1;
  while (left < right)
  {
  while (arr[left] % 2 != 0)
  {
    left++;
  }
  while (arr[right] % 2 == 0)
  {
    right--;


相关文章
|
5月前
|
C语言
C语言第三十二弹---打印整数二进制的奇数位和偶数位
C语言第三十二弹---打印整数二进制的奇数位和偶数位
|
6月前
|
C语言
【C语言刷题】调整奇数偶数顺序、有序序列合并以及有序序列判断
【C语言刷题】调整奇数偶数顺序、有序序列合并以及有序序列判断
40 0
|
10月前
|
C语言
C语言:调整数组使奇数全部都位于偶数前面
题目: 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。 (奇数在数组前面,偶数在数组后面)
|
11月前
|
C语言
C语言实现奇偶排序(奇数在前,偶数在后)
C语言实现奇偶排序(奇数在前,偶数在后)
153 0
|
C语言
C语言:打印整数二进制的奇数位和偶数位
C语言:打印整数二进制的奇数位和偶数位
136 0
C语言:打印整数二进制的奇数位和偶数位
|
C语言
带你刷 · C语言 | 调整奇数偶数顺序
问:调整数组使奇数全部都位于偶数前面
89 0
带你刷 · C语言 | 调整奇数偶数顺序
|
人工智能 C语言
C语言求100以内的偶数和、求十个数的乘积习题示例
C语言求100以内的偶数和、求十个数的乘积习题示例
313 0
C语言求100以内的偶数和、求十个数的乘积习题示例
|
C语言
C语言顺序表:奇数放偶数前
C语言顺序表:奇数放偶数前
186 0
|
1天前
|
C语言
C语言—内存函数的实现和模拟实现(内存函数的丝绸之路)
C语言—内存函数的实现和模拟实现(内存函数的丝绸之路)
17 0
|
1天前
|
C语言
C语言—字符函数与字符串函数(字符问题变简单的关键之技)
C语言—字符函数与字符串函数(字符问题变简单的关键之技)
4 0