提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
问题
输入一个数组,实现一个函数
来调整数组中数字的顺序使得数组中所有奇数位于数组的前半部分,偶数位于数组的后半部分
一.思路
题目要求我们数组的前半部分为奇数,后半部分为偶数,所以我们只需首先从前半部分找到偶数再从后半部分找到奇数交换,如此循环该过程,就可以按照题目格式进行输出.
二.代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//输入一个数组,实现一个函数
//来调整数组中数字的顺序使得数组中所有奇数位于数组的前半部分,偶数位于数组的后半部分
void move(int arr[], int sz) {
int left = 0;
int right = sz - 1;
//从左往右找偶数
while (left <right) {
while (arr[left] % 2 == 1) {
left++;
}
//从右往左找奇数
while (arr[right] % 2 == 0) {
right--;
}
//交换
if (left < right) {
int temp = 0;
temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
}
}
}
//打印数组函数
void print(int arr[], int sz) {
int i = 0;
for (i = 0; i < sz; i++) {
printf("%d", arr[i]);
printf("\t");
}
printf("\n");
}
int main() {
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr) / sizeof(arr[0]);
print(arr,sz);
move(arr,sz);
print(arr,sz);
return 0;
}
三.运行结果
总结
首先拿到问题前分析思路,这样求解就简单起来.