让分别有N个奇数和偶数的数组的下标位置放着相应奇偶的数——c++实现

博客介绍了如何使用C++算法确保一个2n个元素的数组中,奇数下标位置存放奇数,偶数下标位置存放偶数。文章提供了详细的算法描述,并包含测试用例及运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:数组A,2*n个元素,n个奇数、n个偶数,设计一个算法,使得数组奇数下标位置放置的都是奇数,偶数下标位置放置的都是偶数

算法:

/**
 *是否是偶数
 */
bool IsEvent( int num )
{
	return (num % 2 == 0);
}

/**
 *是否是奇数
 */
bool IsOdd( int num )
{
	return (num % 2 == 1);
}

/**
 *算法内容
 */
bool OddEvent(int *a, int size)
{

	if( !IsEvent( size )  ) return false;
	int event_index = 0;	//偶数下标
	int odd_index = 1;	//奇数下标
	while(event_index <= size - 2 && odd_index <= size - 1)
	{
		while( IsEvent( a[event_index] ) ) event_index+=2;
		while( IsOdd( a[odd_index] ) ) odd_index+=2;
		if(event_index <= size - 2 && odd_index <= size - 1)
		{
			int tmp = a[event_index];
			a[event_index] = a[odd_index];
			a[odd_index] = tmp;	
			event_index += 2;
			odd_index += 2;
		}
	}
	return true;
}

测试用例:

#include <iostream>
#include <cstdlib>

/**
 *随机[begin, end]区间的整型数
 */
int Random( int begin, int end)
{
	retur
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值