<span style="color: rgb(51, 51, 51); font-family: arial, STHeiti, 'Microsoft YaHei', 宋体; font-size: 14px; line-height: 22.3999996185303px;">输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。</span> class Solution { public: //类似插入排序,找到什么地方插入,i为最右边的奇数的位置,j为i的左边偶数的位置 void reOrderArray(vector<int> &array) { if (array.size() == 0) return; int i = array.size() - 1; int j = i; int temp = 0; while (1) { while (array[i] % 2 == 0)//找到奇数 { i--; if (i<0) return; } if (i>1) { j = i - 1; } while (array[j] % 2 == 1)//找到偶数 { j--; if (j<0) return; } //找到位置插入,奇数向前挪,将偶数挪到后面 temp = array[j]; int count = j; for (count; count < i; count++) { array[count] = array[count+1]; } array[i] = temp; } } };