第 12 题  以下代码的功能是将数组中的奇数和偶数分别放在数组的前半部分和后半部分,横线处应该填入的是( )。  

别灰心,再试一次!

💡 真题解析

【答案】D

【考纲知识点】模拟法

【解析】按照题干所示的方法进行模拟,当查找区间存在时,对应代码while(left < right),则用left变量充当左指针,right指针充当右指针,分别从左往右,从右往左扫描,遇到第一个偶数/奇数时停下来,交换它们,以此达成题意。


考点:数组元素奇偶排序的算法逻辑。
答案:D
解析:用双指针法,1eft 找偶数,right 找奇数。left 找到偶数交换后, right 应从右向左找奇数,即 while(arr[right]%2==0&&left<right)right--;。A选项判断 left 位置元素;B选项 left--方向错误;C选项判断奇数不符合。

知识点解析:需从右向左找到第一个偶数(arr[right] % 2 == 0),然后与左指针的奇数交换,实现奇偶分离。