现在的位置: 首页 > 综合 > 正文

第二十六题 调整数组顺序使奇数位于偶数前面

2018年04月13日 ⁄ 综合 ⁄ 共 456字 ⁄ 字号 评论关闭

题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)

思路:用2个指针,第一个指向第一个数的前面一个,第二个指针指向第一个指针,当第二个指针指向的值为奇数的时候与第一个指针指向的值交换,否则第二个指针加1

//调整数组顺序使奇数位于偶数前面
#include <iostream>
using namespace std;
void coutstr(int *a,int n)
{
	if (a==nullptr)
	{
		return;
	}
	int beg=-1;
	int end=0;
	while (end<n)
	{
		if (*(a+end)%2!=0)
		{
			beg=beg+1;
			swap(*(a+beg),*(a+end));	
		}
		end=end+1;
	}
	for (int i=0;i<n;++i)
	{
		cout<<*(a+i)<<endl;
	}
}
int main()
{
	int a[8]={1,2,3,4,5,7,8,9};
	coutstr(a,sizeof(a)/sizeof(int));
	return 0;
}

抱歉!评论已关闭.