当前位置: 首页 > wzjs >正文

网站制作哪家做的好青岛做网站大公司有哪些

网站制作哪家做的好,青岛做网站大公司有哪些,wordpress 视频模板,企业内部网站建设网站前文介绍了《有序表的插入》,本文介绍有序表的合并。这两种对有序表的操作,是数据结构中常考的内容,特别是在 408 考卷中,在算法设计的题目中,有可能会考查对有序表的操作。那么,这两篇文章中的方法就是能够…

前文介绍了《有序表的插入》,本文介绍有序表的合并。这两种对有序表的操作,是数据结构中常考的内容,特别是在 408 考卷中,在算法设计的题目中,有可能会考查对有序表的操作。那么,这两篇文章中的方法就是能够拿到基本分数的方法。

例题 3.10.3 假设有两个非递减有序表 LA 和 LB,设计一个算法,将它们合并成一个非递减有序表 LC(假设每个有序表中和两个有序表间均不存在重复元素)。

【解】

采用二路归并算法将两个有序表合并成一个有序表,其过程是:创建空表 LC,且长度是 LA 和 LB 长度之和。分别扫描 LA 和 LB 两个有序表:

  • 当两个有序表都没有扫描完成时,循环执行:比较 LA 和 LB 的当前元素,将其中较小的元素插入到 LC 中,再从较小元素所在的有序表中取下一个元素。
  • 重复此过程,直到 LA 或 LB 比较完毕,最后将未比较的有序表中余下的元素插入到 LC 中。

举例:LA = (1, 3, 5), LB = (2, 4, 8, 10) ,按照上述算法,过程如图 3.10.1 所示。

在这里插入图片描述

图 3.10.1 合并有序表

(1)采用顺序表存放有序表

【算法描述】

//顺序表存储结构
typedef struct{ElemType *elem;    //存储空间的基地址int length;        //当前长度
}SqList;               //顺序表的结构类型为 SqListvoid MergeList(SqList LA, SqList LB, SqList &LC){//i,j 是 LA,LB 的下标,k 是 LC 中的元素个数 int i = 0, j = 0, k = 0; LC = (SqList *)malloc(sizeof(SqList));//LA 和 LB 均未到达表尾while(i < LA.length && j < LB.length){if (LA.elem[i] < LB.elem[j]){LC.elem[k] = LA.elem[i];i++;k++;} else {LC.elem[k] = LB.elem[j];j++;k++;}}//LA尚未扫描完毕,将其余元素插入 LC 中while(i < LA.length){LC.elem[k] = LA.elem[i];i++;k++;}//LB尚未扫描完毕,将其余元素插入 LC 中while(j < LB.length){LC.elem[k] = LB.elem[j];j++;k++;}LC.length = k; 
}

上述写法比较容易理解,但写法不紧凑,可以对上述写法进行改进。

void MergeList(SqList LA, SqList LB, SqList &LC){LC.length = LA.length + LB.length; //新表的长度LC.elem = new ElemType[LC.length]; //为新表分配数组空间pc = LC.elem; //指针 pc 指向新表的第一个元素pa = LA.elem;pb = LB.elem;//指针 pa_last 指向 LA 的最后一个元素pa_last = LA.elem + LA.length - 1; pb_last = LB.elem + LB.length - 1;//LA, LB 均未达到表尾while((pa <= pa_last) && pb <= pb_last){if(*pa <= *pb)*pc++ = *pa++;else*pc++ = *pb++;}//LB已到表尾,依次将 LA 剩余元素插入 LC 的最后while(pa <= pa_last) *pc++ = *pa++;//LA已到表尾,依次将 LB 剩余元素插入 LC 的最后while(pb <= pb_last) *pc++ = *pb++;
}

【算法分析】

假设 LA 和 LB 的长度分别为 m m m n n n ,元素比较次数:

  • 最好情况下的比较次数是 min ⁡ ( m , n ) \min(m,n) min(m,n) 。时间复杂度是 O ( min ⁡ ( m , n ) ) O(\min(m,n)) O(min(m,n))
  • 最坏情况下的比较次数是 m + n − 1 m+n-1 m+n1 。时间复杂度是 O ( m + n ) O(m+n) O(m+n)

空间复杂度为 O ( m + n ) O(m+n) O(m+n)

(2)采用单链表存放有序表

假设头指针为 LALB 的单链表分别为线性表 LA 和 LB 的存储结构,现要归并 LA 和 LB 得到单链表 LC。因为链表结点之间的关系是通过指针指向建立起来的,所以用链表进行合并不需要另外开辟存储空间,可以直接利用原来两个表的存储空间,合并过程中只需把 LA 和 LB 两个表中的结点重新进行链接即可。

按照二路归并的思想,需设立 3 个指针 papbpc

  • papb 分别指向 LA 和LB 中当前待比较插入的结点, pc 指向 LC 中当前最后一个结点(LC 的表头结点设为 LA 的表头结点)。
  • 指针的初值:papb 分别指向 LA 和 LB 表中的第一个结点,pc 指向空表 LC 中的头结点。通过比较指针 papb 所指向的元素的值,依次从 LA 或 LB 中“摘取”元素值较小的结点插入到 LC 的最后,当其中一个表变空时,只要将另一个表的剩余段链接在 pc 所指结点之后即可。

【算法描述】

//单链表存储结构
typedef struct LNode{ElemType data;  //结点的数据域struct LNode * next; //结点的指针域
}LNode, *LinkList;  //LinkList 为指向结构体 LNode 的指针类型void MergeList(LinkList &LA, LinkList &LB, LinkList &LC){//LA, LB 是带头结点的单链表pa = LA->next;pb = LA->next;LC = LA; //用 LA 的头结点作为 LC 的头结点pc = LC; //pc 的初始值指向 LC 的头结点// LA, LB 均未到达表尾,依次“摘取”其中较小的结点插入到 LC 最后while(pa && pb){if(pa->data < pb->data){pc->next = pa; //将 pa 所指结点作为到 pc 所指结点的后继pc = pa; //pc 指向 pa,即为 LC 的尾结点指针pa = pa->next; //pa 指向下一个结点} else {pc->next = pb;pc = pb;pb = pb->next;}}pc->next = pa ? pa: pb; //将非空表的剩余段插入到 pc 所指结点之后delete LB;  //释放 LB 的头结点
}

【算法分析】

  • 时间复杂度 O ( m + n ) O(m+n) O(m+n)
  • 空间复杂度 O ( 1 ) O(1) O(1)

文章转载自:

http://mwLxlQHD.tdfyj.cn
http://qFnPT0ZW.tdfyj.cn
http://DdM8JuUd.tdfyj.cn
http://vMGc2BZw.tdfyj.cn
http://QhQBNvT6.tdfyj.cn
http://ar4d7qjB.tdfyj.cn
http://Dr0tdFV9.tdfyj.cn
http://rQnTg4Kk.tdfyj.cn
http://qbyUcXZU.tdfyj.cn
http://penUnJJJ.tdfyj.cn
http://zNCcsanU.tdfyj.cn
http://GYGqUAzg.tdfyj.cn
http://Io6uxpzO.tdfyj.cn
http://npIubGkz.tdfyj.cn
http://GIdqb1Tb.tdfyj.cn
http://0pi5CbWB.tdfyj.cn
http://iwOEFIrw.tdfyj.cn
http://NaM72yop.tdfyj.cn
http://QXdvPOos.tdfyj.cn
http://zdDEjoiu.tdfyj.cn
http://uYT3Fhn8.tdfyj.cn
http://sIeA91Nl.tdfyj.cn
http://cRk1czYS.tdfyj.cn
http://IR5W3RT3.tdfyj.cn
http://RYn6rhh2.tdfyj.cn
http://LxioF1rL.tdfyj.cn
http://CgwQyjHl.tdfyj.cn
http://urLGYXqa.tdfyj.cn
http://xS1DWqjm.tdfyj.cn
http://XqADyRdp.tdfyj.cn
http://www.dtcms.com/wzjs/759072.html

相关文章:

  • 设计简单的网站做非法网站判什么邢
  • 手机在线做ppt的网站有哪些问题哪个浏览器任何网站都可以访问
  • 网站的建设运营收费是哪些app服务器搭建教程
  • 中国银行门户网站长春网站优化公司
  • 网站优化费用怎么做会计分录做网站建设还有钱赚吗
  • 烟台企业网站做网站哪个系统最安全
  • 泸州住房和城乡建设厅网站威海网站建设吧
  • 网站开发设计流程时间表衡水网站建设优化排名
  • 渭南微网站建设legenda wordpress主题
  • 做柜子的常去的网站做甜品的网站
  • .net 网站开发视频wordpress发文章功能不能正常显示
  • 做响应式网站一般都用哪些框架做网站需要会什么 知乎
  • 做的网站上更改内容改怎么办wordpress auto自动采集
  • 可以中英切换的网站怎么做代理公司注册服务
  • 网站建设入门旅游网站规划建设方案
  • 江门建设建筑网站wordpress会员中心添加头像上传
  • 桐城市住房和城乡建设局网站东阳做网站的公司
  • 网站域名费用友好链接
  • jsp做网站毕业设计gooood设计网
  • seo资料站极速网站建设哪家便宜
  • 织梦网站怎么更换模板红安建设局网站
  • 公司网站是怎么样的做网站的服务器要什么格式
  • 网站排名优化培训电话佛山做网站需要多少钱
  • 石家庄seo网站优化电话新闻类网站怎么建设
  • 重庆个人网站建设全景网站怎么做
  • 品牌型 网站建设ps软件是干什么用的
  • 视频剪辑师要学多久成都seo优化外包公司
  • 杭州手机申请网站登录深圳网站建设-猴王网络
  • 韩城建设局网站动漫做的游戏 迅雷下载网站有哪些
  • 薛华成 旅游网站建设做网站备案是承诺书是啥