C语言(给定一组数组,用函数实现数组中所有奇数位于数组的前半部分,偶数位于数组的后半部分)

解题思路,定义左下标和右下边,分别从数组的左边寻找偶数、从数组的右边寻找奇数,若找到则进行交换,如此循环即可。
编译器:Vs2017
源码如下:
#include<stdio.h>
void pri(int arr[], int n)//打印数组
{
int i = 0;
for ( i = 0; i < n; i++)
{
printf("%d", arr[i]);
}
}
void move(int arr[], int n)
{
int left = 0;//arr【left】指向数组第一个元素
int right = n - 1;//arr[right]指向数组最后一个元素,
int tem = 0;//创建一个临时变量,用于交换数组元素
while (left<right)
{
while ((left<right)&&(arr[left]%21))//从前往后找偶数,比如1,1%2!=0,left++,arr【1】为2,2%20,结束循环,此时arr【left】指向2,
{
left++;

}
while ((left<right)&&(arr[right]%2 ==0))//从后往前找奇数,比如arr【right】此时是8,8%2==0,进入循环,right--,此时arr【right】指向7,不符合循环条件
{
	right--;
}
if (left<right)//第一个while循环找到了一个偶数,第二个while循环找到了奇数,如果找到开始交换两个元素
{
	
	tem = arr[left];
	arr[left] = arr[right];
	arr[right] = tem;
}
}

}
int main()
{
int ch[] = { 1,2,3,4,5,6,7,8 };//定义一个数组
int sz = sizeof(ch) / sizeof(ch[0]);//求出数组长度
move(ch, sz);
pri(ch, sz);

return 0;

}

猜你喜欢

转载自blog.csdn.net/Kirihara_Yukiho/article/details/123155062
今日推荐