有一道这样的编程题:
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
在看到这道题目之后,对冒泡排序算法的运用有了一点心得体会。
冒泡排序算法的核心思想:两个相邻的元素进行比较。n个元素需要进行n-1趟冒泡排序。一趟冒泡排序让一个数据来到它最终应该出现的位置上!
而在该题目中,我们需要让偶数在奇数之后,也就是让偶数出现在它该出现的位置上,这与冒泡排序的核心思想基本一致。
整体代码:
#include<stdio.h>
void Adjust(int arr[], int sz)
{
int i = 0;
int j = 0;
for (i = 0; i < sz - 1; ++i)
{
//移动偶数
for (j = 0; j < sz - i - 1; ++j)
{
//判断该数是否为偶数,是则交换
if (arr[j] % 2 == 0)
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
int main()
{
int arr[10] = { 0 };
int i = 0;
//输入一组数据
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz; ++i)
{
scanf("%d", &arr[i]);
}
Adjust(arr, sz);
for (i = 0; i < sz; ++i)
{
printf("%d ", arr[i]);
}
return 0;
}
运行结果:
如有错误还恳请各位大佬斧正
∪・ω・∪