考研数据结构(每日一题)day50

考研数据结构(每日一题)

题目:已知线性表按顺序存储,且每个元素都是不相同的整数型元素,设计所有奇数移动到所有偶数前面的算法。

算法思想:

使用快速排序思想,假设表为L[1…n],先从前向后找到一个偶数元素L(i),再从后向前找到一个奇数元素L(j),将二者交换,重复上述操作直到i大于j。

完整代码:

void move(ElemType A[],int len){
    int i = 0;   //i表示左端偶数元素的下标
    int j = len - 1;  //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 --;
        }   
    }
}

版权声明:本文为DTRblank原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。