将线性表中奇数和偶数分头存放

这道题是否会让你想起快速排序中的分裂操作?只不过快速排序分开的标准是分大小分别存放而已。

//左偶右奇
void apartEvenOdd(ElemType Buff[],UINT32 len)
{
    ElemType temp;
    int head=0,tail = len-1;

    while (head<tail)
    {
        //寻找奇数
        if(Buff[head]%2==0)
        {
            head++;
        }

        //寻找偶数
        if(Buff[head]%2==1)
        {
            tail--;
        }

        if (head<tail)
        {
            //交换两个的顺序
            temp = Buff[head];
            Buff[head] = Buff[tail];
            Buff[tail] = temp;
        }
    }
}

python实现:

@print_result_after
def partition_even_odd(data):
    start = 0
    last = len(data) - 1

    while start <= last and is_even(data[start]):
        start += 1

    pivot = data[start]

    while start < last:
        while start < last:
            if is_even(data[last]):
                data[start] = data[last]
                start += 1
                break
            else:
                last -= 1

        while start < last:
            if not is_even(data[start]):
                data[last] = data[start]
                last -= 1
                break
            else:
                start += 1

    data[start] = pivot
    return data

def main():
    data = [3,0,1,2,4,5,6]
    partition_even_odd(data)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,143评论 25 709
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,812评论 18 399
  • 酒要一点一点喝,人要一点一点爱。 心情差的话就喝酒啊,直接咕几大口,比慢慢喝来的烈多了。没一会就有点晕了。 这种感...
    迷惘的双眼皮阅读 121评论 0 0
  • 今日春分 大地回暖、万物复苏 让人不禁想去感受如沐春风的江南菜~ 提到江南 好像整个人都会不由自主的柔和起来 在沈...
    沈阳吃货团阅读 225评论 0 0
  • 写申请文书对我来说似乎是个障碍。似乎一动笔就会头痛,仿佛那些写在纸上的回忆都不是我所经历的。有的时候有些恐慌,想到...
    PhoenixChen阅读 201评论 0 1