1. 题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
保证base和exponent不同时为0
原题传送门:link.
2. 提取关键词
奇数,偶数,相对位置不变
3. 思路
- 我们可以借鉴冒泡排序的特点,让偶数不断向右边移动,而冒泡的过程本身也可以保证相对顺序的不变,最后所有的偶数都移动到了右边,最坏情况下外层循环需要进行array.size()次。
来自牛客网:link.
4. 代码实现(Java)
public class Solution {
public void reOrderArray(int [] array) {
int len=array.length;
while(len>0){
len--;
Boolean change=false;
for(int i=0;i<array.length-1;i++)
{
if (array[i]%2==0&&array[i+1]%2==1){//若为偶数且下一个数为奇数
int temp=array[i];
array[i]=array[i+1];
array[i+1]=temp;
change = true;
}
}
if(!change){
return;
}
}
}
}
时间复杂度为(O^2)
5. 知识积累
暂无