当前位置: 首页 > news >正文

【C语言经典例题】调整数组使奇数全部都位于偶数前面

目录

一、题目要求

二、解题思路

分步解析

从前往后找

从后往前找

交换

三、完整代码演示


一、题目要求

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

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

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

二、解题思路

1. 给定两个下标left和right,left放在数组的起始位置,right放在数组中最后一个元素的位置

2. 循环进行一下操作

  a. 如果left和right表示的区间[left, right]有效,进行b,否则结束循环

  b. left从前往后找,找到一个偶数后停止

  c. right从后往前找,找到一个奇数后停止

  d. 如果left和right都找到了对应的数据,则交换,继续a

分步解析

详细的解析都在下面代码的注释中了,大家往下接着看就好了

从前往后找

	while(left<right){// 从前往后,找到一个偶数,找到后停止while((left<right)&&(arr[left]%2==1)){left++;}

从后往前找

		// 从后往前找,找一个奇数,找到后停止while((left<right)&& (arr[right]%2==0)){right--;}

交换

     // 如果偶数和奇数都找到,交换这两个数据的位置// 然后继续找,直到两个指针相遇if(left<right){tmp = arr[left];arr[left] = arr[right];arr[right] = tmp;}

三、完整代码演示

void swap_arr(int arr[], int sz)
{int left = 0;int right = sz-1;int tmp = 0;while(left<right){while((left<right)&&(arr[left]%2==1)){left++;}while((left<right)&& (arr[right]%2==0)){right--;}if(left<right){tmp = arr[left];arr[left] = arr[right];arr[right] = tmp;}}
}

以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!

http://www.lryc.cn/news/29173.html

相关文章:

  • C++经典20题型,满满知识,看这一篇就够了(含答案)
  • 卷积神经网络CNN之ZF Net网络模型详解(理论篇)
  • Vue 3.0 响应性 基础 【Vue3 从零开始】
  • flex布局方式让最后一个(或第二个...n)元素居右显示
  • 【Python语言基础】——Python MySQL Order By
  • 自然数学的哲学原理--复数理论的扩展
  • tsconfig.json中的一些配置
  • Spark调优总结
  • 4.创建和加入通道相关(network.sh脚本createChannel函数分析)[fabric2.2]
  • 若依学习(前后端分离版)——自定义注解@Log(如何自定义注解,实现aop)
  • 防止暴力破解ssh的四种方法
  • jsp试卷分析管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • 可选链运算符(?.)与空值合并运算符(??)
  • JavaScript 闭包
  • 每日记录自己的Android项目(二)—Viewbinding,WebView,Navigation
  • 20230305英语学习
  • 【Linux】手把手教你在CentOS上使用docker 安装MySQL8.0
  • 论文解读:High Dynamic Range and Super-Resolution from Raw Image Bursts
  • 国内的PMP考试通过率高达97%?
  • IOC(概念和原理)
  • 操作系统 - 第二章
  • 进程控制~
  • HCIP第一个实验
  • 阿里云轻量服务器--Docker--dubbo-admin安装(连接zookeeper nacos)
  • 树莓派Pico W无线WiFi开发板使用方法及MicroPython编程实践
  • Redis学习【11】之分布式系统
  • 光速c数列的猜想:光猜
  • 2023年全国最新交安安全员精选真题及答案12
  • 2023年全国最新安全员精选真题及答案14
  • 让Vue响应Map或Set的变化操作,在vue中响应map和set数据结构,计算属性的用法,计算属性特点