当前位置:   article > 正文

【C语言】每日一题,快速提升(1)!

【C语言】每日一题,快速提升(1)!

调整数组使奇数全部都位于偶数前面

题目:

输入一个整数数组,实现一个函数

来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分

所有偶数位于数组的后半部分

解题思路:

给定两个下标left和right,left放在数组的起始位置,right放在数组中最后一个元素的位置
循环进行一下操作
如果left和right表示的区间[left, right]有效,否则结束循环
left从前往后找,找到一个偶数后停止
right从后往前找,找到一个奇数后停止
如果left和right都找到了对应的数据,则交换

代码:

  1. #include <stdio.h>
  2. void my_rele(int* arr, int len)
  3. {
  4. int* left = arr;
  5. int* right = arr + len - 1;
  6. while (left < right)
  7. {
  8. while (left < right && *left % 2 != 0)
  9. {
  10. left++;
  11. }
  12. while (left < right && *right % 2 == 0)
  13. {
  14. right--;
  15. }
  16. int ret = *left;
  17. *left = *right;
  18. *right = ret;
  19. }
  20. }
  21. int main()
  22. {
  23. int arr[] = { 1,2,3,4,5,6,7,8,1,0,9 };
  24. int sz = sizeof(arr) / sizeof(arr[0]);
  25. my_rele(arr, sz);
  26. for (int i = 0; i < sz; i++)
  27. {
  28. printf("%d ", *(arr + i));
  29. }
  30. return 0;
  31. }

结果;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/427984
推荐阅读
相关标签
  

闽ICP备14008679号