![1132eb5c1ef5e85b2379906ab1036b94.png](https://img-blog.csdnimg.cn/img_convert/1132eb5c1ef5e85b2379906ab1036b94.png)
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
//方法一:借助冒泡排序的思想
class Solution {
public:
void reOrderArray(vector<int> &array)
{
int l = array.size();
if(l==0)
return;
bool flag = false;
for(int i=0;i<l;i++) //外层循环 一次便利保证一个元素落在最终位置
{
flag = false;
for(int j=l-1;j> i;j--)
{
if(array[j]%2 == 1 && array[j-1]%2 == 0)//这里保证了相对顺序
{
swap(array[j],array[j-1]);
flag = true;
}
}
if(!flag)
break;
}
}
};
方法二:golang实现
func swap(i *int,j* int) {
temp := *i
*i = *j
*j = temp
}
func reOrderArray(array *[] int){ //切片是值传递,这里需要传递地址
l := len(*array)
if 0 == l {
return
}
for i:= 0;i<l;i++ {
flag := 0
for j := l-1;j>i;j-- {
if (*array)[j] % 2 == 1 && (*array)[j-1] %2 ==0 {
swap(&(*array)[j],&(*array)[j-1])
flag = 1
}
}
if flag == 0 {
break
}
}
}