//修改了牛客评论上的数据搬移,后期在进行优化吧 //游标i,j一个指向奇数一个指向偶数,然后形成数据的搬移,和链表的快慢指针很像,快排的思想?个人感觉没有用到快排,只是用到了最基本的数据搬移思想,空间复杂度进一步降低,属于原地排序算法 public class Solution { public void reOrderArray(int [] a) { int len = a.length; if (len <= 1) return; int i = 0; //游标i while (i < len-1){ int j = i + 1; if(a[i] % 2 == 0){ while (a[j] % 2 == 0){ if (j == len - 1) return; //扫描到最后都是偶数返回 j++; } //此时j为奇数发生数据交换 int temp = a[j]; for (int k = j; k > i; k--) { a[k] = a[k-1]; } a[i] = temp; } i++; } } }