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;
		}
	}
}
相关推荐
乐分启航3 分钟前
【无标题】
深度学习·算法·目标检测·transformer·迁移学习
GfovikS0610011 分钟前
C++中的函数式编程
开发语言·c++·算法
2401_8579182912 分钟前
C++中的构建器模式
开发语言·c++·算法
穿条秋裤到处跑16 分钟前
每日一道leetcode(2026.03.25):等和矩阵分割 I
算法·leetcode·矩阵
小江的记录本21 分钟前
【Java】Java核心关键字:final、static、volatile、synchronized、transient(附《面试高频考点》)
java·开发语言·spring boot·后端·sql·spring·面试
实心儿儿24 分钟前
算法9:相同的树
算法·leetcode·职场和发展
another heaven26 分钟前
【计算机 字符编码类型及其应用场景详解】
数据结构·字符编码
Zarek枫煜30 分钟前
zig与c3的算法 -- 静态队列
开发语言·stm32·单片机·嵌入式硬件·算法·51单片机
fff98111830 分钟前
基于C++的爬虫框架
开发语言·c++·算法
XiYang-DING34 分钟前
【LeetCode】Easy | 387. 字符串中的第一个唯一字符
算法·leetcode·职场和发展