Nicn的刷题日常之调整奇数偶数顺序

目录

1.题目描述

2.解题思路

3.解题


1.题目描述

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

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

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

2.解题思路

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

3.解题

cpp 复制代码
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;
		}
	}
}
相关推荐
东东的脑洞11 小时前
【面试突击】TCP 四次挥手详解
网络·tcp/ip·面试
@卞11 小时前
排序算法(2)--- 选择排序
算法·排序算法
脏脏a11 小时前
链式存储范式下的二叉树:基础操作实现解析
c语言·数据结构·算法·二叉树
iAkuya11 小时前
(leetcode)力扣100 26环状链表2(双指针)
算法·leetcode·链表
sin_hielo11 小时前
leetcode 2402(双堆模拟,小根堆)
数据结构·算法·leetcode
37手游后端团队11 小时前
Cursor 工作区使用技巧:让 AI 真正理解你的多项目协作
后端·面试·架构
weixin_4617694011 小时前
3. 无重复字符的最长子串
c++·算法·滑动窗口·最长字串
Morwit11 小时前
【力扣hot100】 312. 戳气球(区间dp)
c++·算法·leetcode
李拾叁的摸鱼日常11 小时前
Java Optional 最佳实践+注意事项+避坑指南
java·后端·面试
CoovallyAIHub11 小时前
摄像头如何“看懂”你的手势?手势识别实现新人机交互
深度学习·算法·计算机视觉