1.问题描述
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
2.问题解决
我们拿到这样一个问题,想要用函数解决它的话,我们需要将数组作为参数来调用函数,我们使用传址调用的方式,这里不再赘述。下面介绍如何编写这个函数,首先题目描述我们将奇数排在前半部分,偶数排在后半部分,并没有要求按照大小排序,我们想到这样一个办法,我们在遍历数组的过程中再创建一个初始为0的变量n,当循环到的数组元素为奇数时,我们将以n为下标的数组元素与之交换,这样在遍历数组一遍之后,为奇数的数组元素便被全部交换到了前面。下面时具体代码:
void x(int* arr) { int i = 0; int n = 0; int tmp = 0; for (i = 0; i < 10; i++) { if (arr[i] % 2 == 1) { tmp = arr[n]; arr[n] = arr[i]; arr[i] = tmp; n++; } } } int main() { int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; x(arr); int i = 0; for (i = 0; i < 10; i++) { printf("%d ", arr[i]); } return 0; }
打印结果为:
本文到此结束,感谢大家的阅读,欢迎各位点赞评论,互关互注,祝大家万事如意。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)