将数组中奇数放在前面,偶数放在后面

题目

#include <stdio.h>

void Swap(int* a, int* b) //交换数值
{
    
    
	int t = *a;
	*a = *b;
	*b = t;
}

void Sort(int* p, int n)
{
    
    
	int i, j;
	for (i = 0, j = n - 1; i < j; i++, j--)
	{
    
    
		while (p[i] % 2 == 1 && i < j)  //i<j为寻找的充分条件,不可缺少!
			i++;	 //往后找偶数
		while (p[j] % 2 == 0 && i < j)
			j--;	//从后往前找奇数
		Swap(p + i, p + j);  //找到第一个偶数与第一个奇数时交换位置
	}
}
void Input(int* p, int n)  //数组输入
{
    
    
	for (int i = 0; i < n; i++)
	{
    
    
		scanf("%d", p + i);
	}
}
void printArray(int* p, int n)  //打印数组
{
    
    
	for (int i = 0; i < n; i++)
		printf("%d ", p[i]);
}
int main()
{
    
    
	int a[100], n;
	scanf("%d", &n);
	Input(a, n);
	Sort(a, n);
	printArray(a, n);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Genius_bin/article/details/112188622