调整奇数偶数顺序
1.题目
输入一个整数数组,实现一个函数,
来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
所有偶数位于数组的后半部分。
2.题目分析
这道题首先用到的方法是冒泡排序的思想,首先通过冒泡排序筛选出不能被2整除的数就是奇数,然后再将这些数和偶数交换位置进行排序就符合要求
3.函数的实现
//调整数组使奇数全部都位于偶数前面的函数
void swap(int* arr, int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
int j = 0;
if (*(arr + i) % 2 == 0)//判断是否是偶数
{
for (j = i + 1; j < sz; j++)
{
if (*(arr + j) % 2 != 0)//判断是否为奇数
{
//和偶数交换位置
int temp = *(arr + j);
*(arr + j) = *(arr + j - 1);
*(arr + j - 1) = temp;
}
}
}
}
}
4.打印数组的函数实现
//打印数组函数
void print(int* arr, int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", *(arr++));
}
}
5.完整代码实现
#include<stdio.h>
//调整数组使奇数全部都位于偶数前面的函数
void swap(int* arr, int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
int j = 0;
if (*(arr + i) % 2 == 0)//判断是否是偶数
{
for (j = i + 1; j < sz; j++)
{
if (*(arr + j) % 2 != 0)//判断是否为奇数
{
//和偶数交换位置
int temp = *(arr + j);
*(arr + j) = *(arr + j - 1);
*(arr + j - 1) = temp;
}
}
}
}
}
//打印数组函数
void print(int* arr, int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", *(arr++));
}
}
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr) / sizeof(arr[0]);
swap(arr, sz);
print(arr, sz);
return 0;
}