码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构——线性表的一些算法

时间:2018-12-17 16:07:13      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:list   解题思路   key   结构   插入   要求   空间   长度   div   

 

1.已知线性表(a0,a1,a2,….an)按顺序存储,且每个元素都是均不相等的整数,设计把所有的比a0大的数移到其右边,把所有比a0小的数移到其左边的算法。
要求:时间最少,辅助空间最少。

解题思路:其实这就是一趟快速排序,a0到位,比它小的交换到低端,比它大的交换到高端。

void move(SqList L)
{
    int i=0,j=L.length-1;
    int key=L.elem[0];
    while (i<j)
    {
        while (i<j &&L.elem[j]>=key) --j;
        {
            L.elem[i]=L.elem[j];///比枢纽小的交换到底端
            ++i;
        }
        while (i<j && L.elem[i]<=key) ++i;
        {
            L.elem[j]=L.elem[i];///比枢纽大的交换到高端
            --j;
        }
    }
    L.elem[i]=key;///枢纽到位
}

 

2.已知线性表LA和 LB中的数据元素按值非递减有序,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列。

       LA=(3,5,8,11)
       LB=(2,6,8,9,11,15,20)
则:LC=(2,3,5,6,8,8,9,11,11,15,20)

解题思路:先设LC为空表,然后将LA或LB中的元素逐个插入到LC中即可。LC中元素按值非递减有序排列。 设指针i和j分别指向LA和LB中某个元素,若设i当前所指元素为ai,j当前所指元素为bj,则当前应插入到LC中的元素ck为

        ai     当ai<=bj时
ck=
        bj      当ai>bj时

void MergeList(SqList La, SqList Lb, SqList *Lc)
{
    /* 本算法将非递减的有序表 La 和 Lb 归并为 Lc*/
    /*Lc的数据元素也按值非递减有序*/
    int i=0,j=0,k=0;
    int ai,bj;
    InitList(Lc);/*构造空的线性表Lc*/
    Lc->length=La.length+Lb.length; /*Lc表的长度*/
    while((i<=La.length-1)&&(j<=Lb.length-1))
    {   /* La和Lb均非空,i =0, j = 0, k = 0*/
        ai=La.elem[i]; /*取La中第i个元素*/
        bj=Lb.elem[j];/*取Lb中第j个元素*/
        if (ai<=bj)    /* 将 ai 插入到 Lc 中*/
        {
            ListInsert(Lc,k,ai);
            ++i;
            ++k;
        } /*if*/
        else     /* 将 bj 插入到 Lc 中*/
        {
            ListInsert(Lc,k,bj);
            ++j;
            ++k;
        } /*else*/
    }
    while(i<=La.length-1)///La非空且Lb空时,将La剩下的部分插入Lc中
    {
        ai=La.elem[i];
        ListInsert(Lc, k, ai);
        ++i;
        ++k;
    }
    while(j<=Lb.length-1)///Lb非空且La空时,将Lb剩下的部分插入Lc中
    {
        bj=Lb.elem[j];
        ListInsert(Lc, k, bj);
        ++j;
        ++k;
    }
}/* merge_list*/

 

数据结构——线性表的一些算法

标签:list   解题思路   key   结构   插入   要求   空间   长度   div   

原文地址:https://www.cnblogs.com/wkfvawl/p/10131625.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!