void move(ElemType A[] ,int len) {
int i=0,j=len-1; //i表示左端偶数元素的下标,j表示右端奇数元素的下标
while(i<j) {
while(i<j&&A[i]%2!=0) i++; //从前向后找到一个偶数元素
while(i<j&&A[j]%2!=1) j--; //从后向前找到一个奇数元素
if (i<j)
{
swap(A[i],A[j]);
i++;
j--;
}
}
}
采用基于快速排序的划分思想来设计算法,只需遍历一次即可,其时间复杂度为O(n),空间复杂度为O(1).
转载的
大佬的地址:
https://blog.csdn.net/yjh_algorithm/article/details/70545880