调整数组中所有奇数位于偶数之前

题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中

所有奇数全部位于前半数组,所有偶数全部位于后半数组。


题目分析:

一个整型数组中既有奇数又有偶数,欲使所有奇数全部位于前半数组,所有偶数全部位于后半数组,
那么我们不妨从前边查找偶数即arr[left]%2==0,如果不是偶数它将继续向后查找left+1,直到找到偶数,同时从后边
查找奇数即arr[left]%2==1,如果不是奇数它将继续向前查找right-1,将前边找到的奇数和后边找到偶数交换,的当两
个数组相遇时前边的就全为奇数,后边的就全为偶数。


代码实现如下:

<span style="font-size:14px;">#include<stdio.h>
void odd_before(int arr[],int sz)
{
	int left = 0;
	int right = sz-1;
	int tmp = 0;
	while(left<right)
	{
	while((arr[left]%2 == 0)&&(arr[right]%2 == 1))
		//前边为偶数后边为奇数时交换这两个数
	   {
		   tmp = arr[left];
		   arr[left] = arr[right];
		   arr[right] = tmp;
	   }
	while(arr[left]%2 == 1)//当前边为奇数left+1,向后查找
	{
		left++;
	}
	while(arr[right]%2 == 0)//当后边不为奇数时right-1,向前查找
	{
	right--;
	}

	}


}
int main()
{
	int arr[] = {1,2,4,3,6,5,0};
	int sz = sizeof(arr)/sizeof(arr[0]);
	int i = 0;
	odd_before(arr,sz);
	for(i = 0;i<sz;i++)
	{
		printf("%d",arr[i]);
	}
	printf("\n");
	system("pause");
return 0;
}</span>
运行结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值