题目描绘:
已知一个线性表按顺序存储,且每个元素都是不相同的整数型元素,设计一个算法,将所有的奇数移到所有偶数的前边。
算法思想:
本题可以采用快排的思想来做,只需要遍历一次就可以完成题目的要求,假设表长为L【1…n】,先从前向后寻找一个偶数元素L(i),再从后向前寻找一个奇数元素L(j),将二者交换,重复上面的过程,直到i>j为止。
代码如下:
void move(ElemType A[],int len){
int i=0,j=len-1;
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--;
}
}
}