复习.C++/C.编写一个函数 使数组的奇数部分去前面偶数部分去后面

本文解析了一段简单的奇偶数分离并交换代码,探讨了如何在函数外部正确获取数组长度,以及为什么不能在函数内部使用sizeof。重点讲解了while循环的应用和数组操作技巧。
部署运行你感兴趣的模型镜像

这个题看上去挺复杂(我认为)实际上并不复杂   其实只是一个元素交换问题

目的是把奇数放左边  偶数放右边  找到左边不是奇数的  右边不是偶数的  把他们进行交换即可

代码如下

#include<iostream>
using namespace std;
int main()
{
	void sort_arr(int arr[],int size);
	const int n = 10;
	int arr[n] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	sort_arr(arr,sz);
	cout << "排序后的结果为:" << endl;
	for (int i = 0; i < n; i++)
	{
		cout << arr[i] << " ";
	}
	return 0;
}

//奇数去左边 偶数去右边  
void sort_arr(int arr[],int size)
{
	int left = 0;
	int right = size - 1;
	while (left<right)
	{
		while (arr[left]%2==1)   //若左边的数是奇数
		{
			left++;
		}
		while (arr[right]%2==0)  //若右边的数是偶数
		{
			right--;
		}
		int tmp = arr[left];
		arr[left] = arr[right];
		arr[right] = tmp;
	}
}

这里有一个值得注意的点  当求数组元素个数时  可以看到是用数组总大小/单个元素的大小的 

这个过程不可以放在函数里 这样求出来的数组元素个数是不正确的   具体原因

恩...   我想想  主函数内调用函数时  函数实参是arr数组  而形参写的也是 int arr[] 这里传递的实际上是首元素地址  那么如果在函数里用到sizeof(arr)可能就不对了吧 ..   我并不是很确定  反正求数组元素个数的过程不能放在函数内  应该加一个函数参数  用来储存数组元素个数

剩下的就没什么注意的了  注意里面用的是while 并不是if 因为不能保证一次left++就能找到那个偶数  额 可能这些点对于技术成熟的人来说并不是值得注意的   哎  说到这里有一丝丝悲伤了   就这吧  

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值