奇数位于偶数前面-创新互联

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

创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的万载网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

 思路:这个题目要求把奇数放在数组的前半部分,偶数放在数组的后半部分,因此数组中所有奇数位于偶数前面。我们在扫描这个数组时,遇到偶数在奇数前面时可以交换一下它们的顺序。因此我们可以定义两个指针pBengin、pEnd,pBegin指向数组的首地址,pEnd指向数组的最后一位,当pBengin指向的数字为奇数时,pbengin向后移动,当指向的数字为偶数时,先不动。当pEnd指向的数字为偶数时不动,奇数时向前移动。在没有相遇之前奇数总数位于偶数前面,如果第一个指向的位偶数第二个指向的为奇数,可以交换这两个数字。

代码:

#include<iostream>

using namespace std;
void ReorderOddEven(int *arr,int length)
{
	if(arr==NULL|| length==NULL)
		return;
	int *pBegin=arr;
	int *pEnd=arr+length-1;
	while(pBegin<pEnd)
	{
		while(pBegin<pEnd && (*pBegin%2)!=0)//向后移动直到它指向偶数
			pBegin++;
		while(pBegin<pEnd && (*pEnd%2)==0)//向前移动直到它指向奇数
			pEnd--;
		if(pBegin<pEnd)
		{
			int tmp=*pBegin;
			*pBegin=*pEnd;
			*pEnd=tmp;
		}
	}
}

int main()
{
	int arr[]={1,2,3,4,5,6,7};
	int sz=sizeof(arr)/sizeof(arr[0]);
	ReorderOddEven(arr,sz);
	for(int i=0;i<sz;i++)
	{
		cout<<arr[i]<<' ';
	}
	return 0;
}

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

当前标题:奇数位于偶数前面-创新互联
链接分享:https://www.cdcxhl.com/article18/cspcgp.html

成都网站建设公司_创新互联,为您提供响应式网站静态网站云服务器Google面包屑导航企业建站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设