思路:此题若没有“保证奇数和奇数,偶数和偶数之间的相对位置不变”这一条件,可以用快排的思想,但是条件所限,只能考虑稳定的算法,快速排序、选择排序、希尔排序都是不稳定的,只能选冒泡排序,插入排序了。 void reOrderArray(vector<int> &a) {//基于冒泡排序 int len = a.size(); if(len==0) return; for(int i=0;i<len-1;i++) { for(int j=0;j<len-i-1;j++) { if(a[j]%2==0&&a[j+1]%2!=0) { int temp = a[j+1]; a[j+1] = a[j]; a[j] = temp; } } } } void reOrderArray(vector<int> &a) {//基于插入排序 int len = a.size(); if(len==0) return; for(int i=1;i<len;i++) { int temp = a[i]; int j=i-1; while(j>=0&&a[j]%2==0&&temp%2==1) { a[j+1]=a[j]; j--; } a[j+1] = temp; } }