题目描述
利用冒泡排序算法的原理,实现对一个数组的奇偶分组,即:将奇数放数组左边,偶数放数组右边,多个奇数或偶数之间的顺序不变。
输入格式
一共 2 行,第一行为数组的个数 n(1≤n≤1000)。
第二行为数组的 n 个整数,整数之间以一个空格分隔。
输出格式
输出一行,输出分组后数组的每一个值。
样例输入
10
1 2 3 4 5 6 7 8 9 10
样例输出
1 3 5 7 9 2 4 6 8 10
思路:编写group函数 运用冒泡排序---若前偶后奇,则进行交换从而实现
#include <stdio.h>
void group(int arr[],int n) //自定义函数
{
int i,j,t; //t为交换变量
//冒泡
for(i=0;i<n;i++)
for(j=0;j<n-i-1;j++)
//若前偶后奇则交换
if(arr[j]%2==0 && arr[j+1]%2!=0)
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
int main()
{
int a[1000];
int i,n;
scanf("%d",&n);
//遍历输入
for(i=0;i<n;i++)
scanf("%d",&a[i]);
//调用函数
group(a,n);
//遍历输出
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}