归并排序的改进

来源:互联网 发布:开源java软件 编辑:程序博客网 时间:2024/05/22 10:41

PLink mergeSortLink(PLink aHeader)

{

   if (aHeader->next ==NULL)

    {

       return aHeader;

    }

   PLink a,b;

    

    a = aHeader;

    b = aHeader->next;

   while ((b != NULL)&&(b->next !=NULL))

    {

        aHeader = aHeader->next;

        b = b->next->next;//可以模拟是除以2的方法

    }

    b = aHeader->next;

    aHeader->next =NULL;

    //改进如下

   if (a->data > b->data)

    {

        returnmerge(mergeSortLink(a),mergeSortLink(b));

    }

   else

    {

        returnmerge(mergeSortLink(b),mergeSortLink(a));

    }

}