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

news2024/9/21 2:49:10

题目:

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

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

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

奇数在数组面,偶数在数组面)

                    

 =========================================================================

                       

思路:

总体思路:

(一).

设置 数组arr

         

计算数组元素个数

int sz = sizeof(arr) / sizeof(arr[0]);

             

设置 left right 左右下标

int left = 0; -- 左下标,从左往右偶数

int right = sz - 1; -- 右下标,从右往左奇数

                  

(二).

进行调换,奇数放前,偶数放后,

使用 while循环,当 left < right 说明数组还有元素,进行判断调换

              

内嵌第一个 while循环,从左往右偶数

如果 left < right arr[left] % 2 == 1

说明此时 left下标 指向的元素是 奇数

进行循环 left++下标加一判断后一位是不是偶数

              

内嵌第二个 while循环,从右往左奇数

如果 left < rightarr[left] % 2 == 0

说明此时 right下标 指向的元素是 偶数

进行循环right-- 下标减一判断前一位是不是奇数

                   

执行上面两个步骤后left 找到了 偶数right 找到了 奇数开始进行调换

如果 left < right,数组还有元素,就进行调换

创建 临时变量tmp 进行 元素调换

调换后调整左右下标

            

(三).

调换后进行数组打印

                


                 

第一步:

(1).

设置 数组arr

         

(2).

计算数组元素个数

int sz = sizeof(arr) / sizeof(arr[0]);

             

(3).

设置 left right 左右下标

int left = 0; -- 左下标,从左往右偶数

int right = sz - 1; -- 右下标,从右往左奇数

                     

实现代码:

#include <stdio.h>
int main() 
{
	//设置数组:
	int arr[] = { 1,2,3,4,5,6,7,8,9 };

	//计算数组元素个数:
	int sz = sizeof(arr) / sizeof(arr[0]);

	//设置左右下标:
	int left = 0; //左下标,从左往右找 偶数
	int right = sz - 1; //右下标,从右往左找 奇数

	return 0;
}

实现图片:

                 


                 

第二步:

(1).

进行调换,奇数放前,偶数放后,

使用 while循环,当 left < right 说明数组还有元素,进行判断调换

              

(2).

内嵌第一个 while循环,从左往右偶数

如果 left < right arr[left] % 2 == 1

说明此时 left下标 指向的元素是 奇数

进行循环 left++下标加一判断后一位是不是偶数

              

(3).

内嵌第二个 while循环,从右往左奇数

如果 left < rightarr[left] % 2 == 0

说明此时 right下标 指向的元素是 偶数

进行循环right-- 下标减一判断前一位是不是奇数

                   

(4).

执行上面两个步骤后left 找到了 偶数right 找到了 奇数开始进行调换

如果 left < right,数组还有元素,就进行调换

创建 临时变量tmp 进行 元素调换

调换后调整左右下标

                     

实现代码:

#include <stdio.h>
int main() 
{
	//设置数组:
	int arr[] = { 1,2,3,4,5,6,7,8,9 };

	//计算数组元素个数:
	int sz = sizeof(arr) / sizeof(arr[0]);

	//设置左右下标:
	int left = 0; //左下标,从左往右找 偶数
	int right = sz - 1; //右下标,从右往左找 奇数

	//进行调换,奇数放前,偶数放后:
	while (left < right)
	//当数组还有元素,进行判断调换
	{
		//从左往右找偶数:
		while ((left < right) && arr[left] % 2 == 1)
		{
			//找到奇数就跳过,left++,但不跳过right,防止越界
			left++;
		}

		//从右往左找奇数:
		while ((left < right) && arr[right] % 2 == 0)
		{
			//找到偶数就跳过,right--,但不跳过left,防止越界
			right--;
		}

		//此时left找到了偶数,right找到了奇数,开始进行调换:
		if (left < right)
		{
			//进行调换
			int tmp = arr[left];
			arr[left] = arr[right];
			arr[right] = tmp;
			//调换后跳过这对值
			left++;
			right--;
		}
	}

	return 0;
}

实现图片:

                 


                 

第三步:

调换后进行数组打印

                     

实现代码:

#include <stdio.h>
int main() 
{
	//设置数组:
	int arr[] = { 1,2,3,4,5,6,7,8,9 };

	//计算数组元素个数:
	int sz = sizeof(arr) / sizeof(arr[0]);

	//设置左右下标:
	int left = 0; //左下标,从左往右找 偶数
	int right = sz - 1; //右下标,从右往左找 奇数

	//进行调换,奇数放前,偶数放后:
	while (left < right)
	//当数组还有元素,进行判断调换
	{
		//从左往右找偶数:
		while ((left < right) && arr[left] % 2 == 1)
		{
			//找到奇数就跳过,left++,但不跳过right,防止越界
			left++;
		}

		//从右往左找奇数:
		while ((left < right) && arr[right] % 2 == 0)
		{
			//找到偶数就跳过,right--,但不跳过left,防止越界
			right--;
		}

		//此时left找到了偶数,right找到了奇数,开始进行调换:
		if (left < right)
		{
			//进行调换
			int tmp = arr[left];
			arr[left] = arr[right];
			arr[right] = tmp;
			//调换后跳过这对值
			left++;
			right--;
		}
	}

	//调换后进行数组打印:
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}

	return 0;
}

实现图片:

                    

最终代码和实现效果

最终代码:

#include <stdio.h>
int main() 
{
	//设置数组:
	int arr[] = { 1,2,3,4,5,6,7,8,9 };

	//计算数组元素个数:
	int sz = sizeof(arr) / sizeof(arr[0]);

	//设置左右下标:
	int left = 0; //左下标,从左往右找 偶数
	int right = sz - 1; //右下标,从右往左找 奇数

	//进行调换,奇数放前,偶数放后:
	while (left < right)
	//当数组还有元素,进行判断调换
	{
		//从左往右找偶数:
		while ((left < right) && arr[left] % 2 == 1)
		{
			//找到奇数就跳过,left++,但不跳过right,防止越界
			left++;
		}

		//从右往左找奇数:
		while ((left < right) && arr[right] % 2 == 0)
		{
			//找到偶数就跳过,right--,但不跳过left,防止越界
			right--;
		}

		//此时left找到了偶数,right找到了奇数,开始进行调换:
		if (left < right)
		{
			//进行调换
			int tmp = arr[left];
			arr[left] = arr[right];
			arr[right] = tmp;
			//调换后跳过这对值
			left++;
			right--;
		}
	}

	//调换后进行数组打印:
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}

	return 0;
}

实现效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/698097.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【shell】expect命令详解:用expect实现自动化交互式操作

文章目录 一. 运用场景二. 语法说明三. 例子1. scp文件传输自动化2. ssh远程登录3. 切到root用户4. 创建ssh key5. ssh到一个节点创建用户 一. 运用场景 expect主要应用于自动化交互式操作的场景&#xff0c;借助Expect处理交互的命令&#xff0c;可以将交互过程如&#xff1a…

FPGA的软核、硬核、固核

“核” 现在的FPGA设计&#xff0c;规模巨大而且功能复杂&#xff0c;因此设计的每一个部分都从头开始是不切实际的。一种解决的办法是&#xff1a;对于较为通用的部分可以重用现有的功能模块&#xff0c;而把主要的时间和资源用在设计中的那些全新的、独特的部分。这就像是你在…

Golang:cannot find main module; see ‘go help modules‘解决

出现这个的原因就是之前在Golang语言介绍、环境搭建以及编译工具&#xff08; CDN 加速代理&#xff09;https://mp.csdn.net/mp_blog/creation/editor/131431492 这个部分配置CDN加速代理的时候&#xff0c;开启了GO111MODULEon后&#xff1b; go会忽略GOPATH和vendor文件夹&…

问题杂谈(三十五)Linux中文乱码问题

前言&#xff1a; 如下&#xff0c;系统的中文描述是乱码 步骤&#xff1a; 输入locale&#xff0c;如有zh cn 表示已经安装了中文语言 如果没有&#xff0c;通过yum groupinstall chinese-support下载 临时更换语言&#xff1a;输入LANG"en_US.UTF-8"系统设置&a…

【python docker error】最近出现docker拉取python官方镜像出现运行程序容器无法跑起来的现象

最近出现docker拉取python官方镜像出现运行程序容器无法跑起来的现象 官方在最近也就是2023年6月初将docker的python镜像由debian的buster版本切换到bookworm版本&#xff0c;导致一众的用户发现使用官方python的基础镜像的容器启动报错&#xff0c;我也是受害者之一。解决办法…

机器视觉初步10:目标跟踪

目标跟踪是计算机视觉中的一个重要领域&#xff0c;主要目的是在视频序列中跟踪一个或多个目标对象。常见的目标跟踪方法分为三类&#xff1a;非机器学习方法、机器学习方法和深度学习方法1。 文章目录 1.非机器学习方法a) 光流法&#xff08;Optical Flow&#xff09;b) Haar…

【瑞萨RA_FSP】RTC——实时时钟

文章目录 一、RTC简介1. RTC 特性 二、RTC的结构框图1. RTC引脚2. 时钟分频3. 日历计数器/二进制计数器4. 闹钟功能 三、实验&#xff1a;用RTC提供日历时间1. 硬件设计2. 文件结构3. FSP配置4. 宏定义5. 初始化RTC6. RTC中断回调函数7. hal_entry函数 一、RTC简介 RA6M5 的RT…

虚幻引擎(UE5)-大世界分区WorldPartition教程(一)

文章目录 WC与WP的区别一、如何开启WP1.默认创建WP2.手动创建WP3.转换创建WP 二、设置World Partition参数三、启动流送总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 WC与WP的区别 WorldCompostion&#xff08;WC&#xff09; 是UE4中制作大世界…

【java实战】emoj表情导致mySQL存储错误,完美解决

MySQL表的编码格式为utf-8,现在表内数据量巨大&#xff0c;已不能新建表更改表的编码格式。 采用手动编码将有问题的数据转化为utf8进行存储 工具类 import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.util…

大数据Doris(五十):Export导出原理

文章目录 Export导出原理 一、原理 二、查询计划拆分 三、查询计划执行 Export导出原理 Doris Export、Select Into Outfile、MySQL dump三种方式数据导出。用户可以根据自己的需求导出数据。此外数据还可以以文件形式通过Borker备份到远端存储系统中&#xff0c;之后可以…

Gitlab升级报错一:rails_migration[gitlab-rails] (gitlab::database_migrations line 51)

Gitlab-ce从V14.0.12升级到V14.3.6或V14.10.5时报错&#xff1a;如下图&#xff1a; 解决办法&#xff1a; 先停掉gitlab: gitlab-ctl stop 单独启动数据库&#xff0c;如果不单独启动数据库&#xff0c;就会报以上错误 sudo gitlab-ctl start postgresql 解决办法&#x…

哈工大计算机网络课程网络层协议详解之:互联网控制报文协议(ICMP)

哈工大计算机网络课程网络层协议详解之&#xff1a;互联网控制报文协议&#xff08;ICMP&#xff09; 在互联网中&#xff0c;IP数据报的传输很容易出现差错&#xff0c;当出现差错时&#xff0c;最简单的处理办法就是对该IP数据报进行丢弃。但是&#xff0c;并不是直接丢弃就…

android 如何分析应用的内存(九)——libc回调

android 如何分析应用的内存&#xff08;九&#xff09; 接上文&#xff0c;在前面文章中&#xff0c;介绍了bionic库提供的各种功能&#xff0c;其中包括&#xff1a; 自定义的mallocmalloc hookmalloc debug 接下来&#xff0c;介绍的是bionic库提供的libc回调功能&#x…

【Java】Java核心 77:Dom4j 解析 XML综合案例

文章目录 1、需求2、案例效果3、案例分析4、自定义JDBC框架-代码实现4.1、Configuration4.2、注解4.3、映射类&#xff1a;Mapper4.4、SqlSession类 5、自定义JDBC框架的使用5.1、数据表5.2、创建实体类5.3、UserMapper接口5.4、配置文件&#xff1a;config.xml5.5、测试类5.5、…

当金融风控遇上人工智能,众安金融的实时特征平台实践

导读&#xff1a;随着企业数字化转型升级&#xff0c;线上业务呈现多场景、多渠道、多元化的特征。数据要素价值的挖掘可谓分秒必争&#xff0c;业务也对数据的时效性和灵活性提出了更高的要求。在庞大分散、高并发的数据来源背景下&#xff0c;数据的实时处理能力成为企业提升…

vCenter崩了之后重新搭建处理办法

一、需要重新搭的情况下&#xff0c;vCenter虚拟机是无法使用分布式端口组的&#xff0c;而此时所有的物理网卡都在分布式交换机上&#xff0c;这样vCenter虚拟机的网络是无法访问的&#xff0c;所以需要先找到需要一台esxi。 二、此时可以看到两个分布式交换机 正常情况下分布…

高性能商品秒杀抢购系统

完整资料进入【数字空间】查看——baidu搜索"writebug" Goirisrabbbitmqmysql构建高性能商品秒杀抢购系统 一、项目介绍 1. 课程目标 应用GoWeb快速构建秒杀系统全流程应用开发及架构化设计思维梳理逐级优化&#xff0c;轻松应对“秒杀”及类似高并发场景 2. 知…

layui框架学习(30:树形模块)

Layui中的树形组件模块tree用于以树形形式显示上下级结构的数据&#xff0c;类似于winform中的tree控件。tree模块的基本用法及显示效果如下所示&#xff1a; <div id"test"></div><br /><script>layui.use([tree,layer], function(){var tr…

python安装pyelliptic-.5.7报错ImportError: No module named setuptools

1.背景&#xff1a; python安装pyelliptic-.5.7模块报错 2.环境及版本&#xff1a; linux&#xff1a;centos-7.7 python&#xff1a; 2.7.5 pyelliptic&#xff1a;5.7 注意&#xff1a;这里是纯内网环境所以pip不能使用&#xff0c;我这里配置了一个内部yum源 3.解决思路&…

Spring Boot 中的事务注解

在应用程序中&#xff0c;事务管理是一个非常重要的概念。事务是指一系列的操作&#xff0c;这些操作要么全部成功&#xff0c;要么全部失败。在Spring Boot中&#xff0c;可以使用事务注解来管理事务。在使用事务注解的时候&#xff0c;一个非常重要的概念就是事务传播行为。 …