用C语言简单的调整数组使奇数全部都位于偶数前面(或者后面)!!!

用C语言简单的调整数组使奇数全部都位于偶数前面(或者后面)!!!

(使用函数的形式表达)

首先,根据要求,初始化一个整型数组。

比如:

int arr[] = { 1, 4, 6, 5, 15, 24, 3, 9, 16, 18};

其次我们就要考虑如何去编写一个程序去实现此项功能?

  1. 怎么去查找一个数组当中的每一个元素。
  2. 如何判断某个元素是奇数或者是偶数。
  3. 判断完成之后又如何交换位置(两两交换)。

我们逐个去解决这三个问题:

第一个,在此时首先根据要求会思考怎么去查找一个数组当中的每一个元素呢?

我们大家之前是不是都了解过冒泡排序,他的其中一个功能就是怎么去查找数组当中的每一个元素,所以,我们这个程序将会运用冒泡排序相关的知识去完成(也就是大的框架将会和冒泡排序相似)


	for (int i = 0; i < len - 1; i++)
	{
		for (int j = 0; j < len - i - 1; j++)
		{
			//如何判断和交换
		}
	}

第二个,那又如何判断这个元素是奇数还是偶数呢?

可以被2整除的就是偶数,反之,不能被2整除的就是奇数。所以运用单目操作符就可以解决,

判断奇数 : 

arr[j + 1] % 2 != 0

判断偶数 :

arr[j + 1] % 2 == 0

第三个,如何交换位置?

定义一个整形变量即可完成。

int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;

最后一个就是如何查看交换后的数组

void print(int arr[], int len)
{
	for (int i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
}

以上各部分分析工作已经完成,以下附完整代码以及运行结果。

完整代码:

#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)
void Adjustparityorder(int arr[],int len)
{
	for (int i = 0; i < len - 1; i++)//表示要查找每个元素的趟数
	{
		for (int j = 0; j < len - i - 1; j++)//表示要开始查找每个元素
		{
			if (arr[j] % 2 == 0 && arr[j + 1] % 2 != 0)//判断交换的条件(奇数在前,偶数在后)
				//如果想要偶数在前,奇数在后可将交换条件改为(arr[j] % 2 != 0 && arr[j+1] % 2 == 0 )
			{
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
}
void print(int arr[], int len)//查看是否调整成功
{
	for (int i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
}
int main()
{
	int arr[] = { 1, 4, 6, 5, 15, 24, 3, 9, 16, 18};
	int len = sizeof(arr) / sizeof(arr[0]);
	Adjustparityorder(arr,len);
	print(arr, len);
	system("pause");
	return 0;
}

运行结果:

 

如果哪里有不对的地方,或者改正的地方,希望大家不吝赐教哦。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值