C语言调整奇数偶数顺序

题目:

输入一个整数数组,实现一个函数。

用来调整该数组中数字的顺序,

使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

思路:

1.设置两个指针变量:*left和*right,*left表示数组首元素的地址,*right表示数组末元素的地址。

 2.设置[left,right]区间循环来进行元素置换操作。

3.设置一个Swap()函数,起到前后交换的作用。

4.如果在left<right的条件范围内,left往从前往后找,直到找到一个奇数为止。

5.如果在left<right的条件范围内,right从后往前找,直到找到一个偶数为止。

6.如果left和right都找到了对应的数据,则交换,然后继续判断。

扫描二维码关注公众号,回复: 17174414 查看本文章
#include<stdio.h>
void Swap(int arr[],int rs)       //设置Swap函数,最后对前后奇偶进行位置置换
{
	int sum = 0;
	int* left = arr;              //数组名就是首元素的地址,相当于*(arr+i),此时i = 0
 	int* right = arr + rs - 1;    //相当于*(arr+rs-1),首元素地址加数组长度减一等于末元素地址
	while (left < right)          //循环条件
	{
		while ((left < right) && (*left % 2 != 0))
		{
			left++;               
		}
		while ((left < right) && (*right % 2 == 0))
		{
			right--;
		}
		if (left < right)
		{
			sum = *left;          
			*left = *right;       //交换数据元素
			*right = sum;
		}
	}
}
void Print(int arr[],int rs)
{
	for (int i = 0; i < rs; i++)
	{
		printf("%d ",arr[i]);
	}
}
int main()
{
	int arr[] = {1,2,3,4,5,6,7,8,9,10,11,12};
	int rs = sizeof(arr) / sizeof(arr[0]);
	Swap(arr, rs);
	Print(arr,rs);
	return 0;
}

 ----------------------------------------------------------------------

-------------------------------------------------

---------------------------

------------------

----------

感谢老铁支持!!!

--------------------

-----------------------------------

---------------------------------------------------------------

------------------------------------------

猜你喜欢

转载自blog.csdn.net/2301_79201049/article/details/134380185