顺序表 数据调整

已知顺序表L中的数据元素类型为int。设计算法将其调整为左右两部分,左边的元素(即排在前面的)均为奇数,右边所有元素(即排在后面的)均为偶数,并要求算法的时间复杂度为O(n),空间复杂度为O(1)。

快速排序的方法,把奇数偶数分到两边

struct _seqlist{
    ElemType elem[MAXSIZE];
    int last;
};
typedef struct _seqlist SeqList;

void odd_even(SeqList* L)
{
    ElemType demo = L->elem[0];
    int i = 1, tmp, j = 0;
    for (; i < L->last; i++) {
        j = i;
        if (L->elem[i] % 2 != 0) {//交换顺序
            tmp = L->elem[i];
            L->elem[i] = demo;
            demo = tmp;
            i = j;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_45454859/article/details/104701082
今日推荐