调整数组使奇数全部都位于偶数前面

简介: 调整数组使奇数全部都位于偶数前面

调整数组使奇数全部都位于偶数前面


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


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


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


1.输入数组
2.调整数组
3.输出数组


1.输入数组


//输入
  int arr[10] = {0};
  int i = 0;
  int sz = sizeof(arr) / sizeof(arr[0]);
  for(i = 0; i < sz; i++)
  {
  scanf("%d", &arr[i]);
  }


2.调整数组


0700a67930bcfd10adf6b2bd839e5342_be65bbb44932428f8b7fb4c60b3d8fdb.png


void move_num(int arr[], int sz)
{
  int left = 0;
  int right = sz - 1;
  while (left < right)
  {
  //从左往右找偶数,找到停下来
  while ((left < right) && (arr[left] % 2 == 1))
  {
    left++;
  }
  //从右往左找奇数,找到停下来
  while ((left < right) && (arr[right] % 2 == 0))
  {
    right--;
  }
  //交换奇偶数
  if (left < right)
  {
    int tmp = arr[left];
    arr[left] = arr[right];
    arr[right] = tmp;
    left++;
    right--;
  }
  }
}


可能存在数组全是奇数的情况,为避免越界访问,循环条件必须加上

left<right


3.输出数组


//输出
  for (i = 0; i < sz; i++)
  {
  printf("%d ", arr[i]);
  }


完整代码如下


#include<stdio.h>
void move_num(int arr[], int sz)
{
  int left = 0;
  int right = sz - 1;
  while (left < right)
  {
  //从左往右找偶数,找到停下来
  while ((left < right) && (arr[left] % 2 == 1))
  {
    left++;
  }
  //从右往左找奇数,找到停下来
  while ((left < right) && (arr[right] % 2 == 0))
  {
    right--;
  }
  //交换奇偶数
  if (left < right)
  {
    int tmp = arr[left];
    arr[left] = arr[right];
    arr[right] = tmp;
    left++;
    right--;
  }
  }
}
int main()
{
  //输入
  int arr[10] = {0};
  int i = 0;
  int sz = sizeof(arr) / sizeof(arr[0]);
  for(i = 0; i < sz; i++)
  {
  scanf("%d", &arr[i]);
  }
  //调整
  move_num(arr, sz);
  //输出
  for (i = 0; i < sz; i++)
  {
  printf("%d ", arr[i]);
  }
  return 0;
}


af9aaeec8a3739738ccd16a61d2e78ae_8524c63de7d945eb989c034bcb01ebbf.png


目录
相关文章
|
移动开发 前端开发
ruoyi-nbcio-plus基于vue3的flowable修正加签与跳转的前端问题
ruoyi-nbcio-plus基于vue3的flowable修正加签与跳转的前端问题
333 0
|
JSON 前端开发 JavaScript
06_React ajax
06_React ajax
65 0
|
前端开发
MVVM LiveData+DataBinding+Lifecycle+ViewModel架构
MVVM LiveData+DataBinding+Lifecycle+ViewModel架构
151 1
|
传感器 网络协议 C++
工程监测振弦无线采集仪VS-Box外接数字传感器接入逻辑
单类型数字传感器:使用寄存器 DS_SENSOR(282)来设置单类型数字传感器的类型和数量(见下表)。 VS 会自动轮巡发送传感器读取指令,当 VS 接收到传感器输出的数据后解析数据并将其更新到通道寄存器 CHxx 内,最终发送到远程服务器上。
工程监测振弦无线采集仪VS-Box外接数字传感器接入逻辑
|
关系型数据库 MySQL Java
Springboot 连接Mysql ,yml文件中 密码带有特殊符号出错
Springboot 连接Mysql ,yml文件中 密码带有特殊符号出错
1115 0
Springboot 连接Mysql ,yml文件中 密码带有特殊符号出错
|
Ubuntu 关系型数据库 MySQL
Linux 常用命令(前言、文件管理、文件编辑、备份压缩)大全(一)
Linux 常用命令(前言、文件管理、文件编辑、备份压缩)大全(一)
652 0
Linux 常用命令(前言、文件管理、文件编辑、备份压缩)大全(一)
|
存储 分布式计算 数据可视化
闲鱼SPU体系构建的背后
SPU——结构化的利器+闲鱼商品的翻译官~
1188 0
闲鱼SPU体系构建的背后
LeetCode 1684. 统计一致字符串的数目
给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words 。
138 0
|
监控 数据挖掘 项目管理
项目管理专业知识总结
项目管理专业知识总结
235 0
|
JavaScript 编译器 数据安全/隐私保护
说一说JS的IIFE
说一说JS的IIFE
193 0