您身边的网站建设专家
成功案例

【建站服务】秦皇岛400电话申请开通【秦皇岛企业网站建设】秦皇岛微信公众号小程序开发运营价格、秦皇岛微信公众号APP软件客户端设计运营、秦皇岛网页页面设计公司费用、秦皇岛公司网站制作方案流程改版维护大

日期: 2022-09-20 15:10:28 浏览数:7


上往建站提供服务器空间服务商百度快照排名网站托管百度推广运营,致力于设计外包服务与源代码定制开发360推广搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。


秦皇岛400电话申请开通【秦皇岛企业网站建设】秦皇岛微信公众号小程序开发运营价格、秦皇岛微信公众号APP软件客户端设计运营、秦皇岛网页页面设计公司费用、秦皇岛公司网站制作方案流程改版维护大概需要多少钱


秦皇岛,简称“秦”,别称港城、临榆,是河北省地级市,国务院批复确定的中国环渤海地区重要的港口城市,著名的滨海旅游、休闲、度假胜地 [1]  。截至2019年,全市下辖4个区、3个县,总面积7813平方千米,常住人口314.63万人,城镇人口191.04万人,城镇化率60.72%。 [2] 

秦皇岛地处中国华北地区、河北东北部、南临渤海,是中国首批沿海开放城市、首都经济圈的重要功能区、京津冀辐射东北的重要门户和节点城市 [3]  ,华北、东北和西北地区重要的出海口、全国性综合交通枢纽、京津冀协同发展与振兴东北老工业基地两大国家战略的交汇点,是中国最早的自主通商口岸、中国最大铝制品生产加工基地、北方最大粮油加工基地,被誉为“车轮制造之都”。 [4-5] 

秦皇岛因秦始皇东巡至此派人入海求仙而得名,是中国唯一一个因皇帝帝号而得名的城市,因《浪淘沙·北戴河》而闻名遐迩,汇集了丰富的旅游资源,是驰名中外的旅游休闲胜地,山海关区是国家历史文化名城 [6]  。秦皇岛作为国家创新型城市试点,拥有13所高等院校,八十余名享受国务院特殊津贴专家,15万名在校大学生,人才密度居全省首位 [7]  。

秦皇岛曾获中国最美海滨城市、全国十佳生态文明城市、中国北方最宜居城市、中国最佳休闲城市、中国最具爱心城市、中国最具幸福感城市等荣誉。秦皇岛曾协办北京亚运会和北京奥运会,是中国唯一协办过奥运会和亚运会的地级市。2017年获全国文明城市称号。2018年获得国家森林城市称号。


2.8.2 分割表

归并排序的另一项重要任务是将一个表均分为两个表,或者,如果原表的长度为奇数,就分为长度只相差1的两个表。要完成这一工作,一种方式是数出表中元素的数目,然后除以2,并在表的中点将其拆分。我们将给出一个简单的递归函数split,将这些元素“处理”进两个表,其中一个表由第1个、第3个、第5个等元素组成,而另一个表则由偶数位置的元素组成。更确切地说,split函数会将偶数编号的元素从作为参数给出的表中删除,并返回一个由这些偶数编号元素组成的新表。

split函数的C语言代码如图2-27所示,它的参数是LIST类型的表,这样定义是和merge函数有关的。请注意,局部变量pSecondCell被定义为LIST类型。这里是将pSecondCell用作指向表第二个单元(而不是指向表本身)的指针,不过其实LIST类型当然是指向单元的指针。

     LIST split(LIST list)
     {
         LIST pSecondCell;(1)      if (list == NULL) return NULL;(2)      else if (list->next == NULL) return NULL;
         else { /* there are at least two cells */(3)          pSecondCell = list->next;(4)          list->next = pSecondCell->next;(5)          pSecondCell->next = split(pSecondCell->next);(6)          return pSecondCell;
      }
     }复制代码

图 2-27 将表均分为两部分

split是个具有副作用的函数。它会从作为参数给出的表中删除偶数位置的单元,而且它会将这些单元组合成一个作为该函数返回值的新表。

我们能以如下形式,用归纳的方式描述该分割算法。它对表的长度进行了归纳,这段归纳具有多个依据情况。

依据。如果表的长度为0或1,那么我们什么都不用做。这就是说,空表会被“分割成”两个空表,而只有一个元素的表,在分割时会将唯一的元素留在给定的表中,并返回一个空的偶数编号元素表(因为原表没有偶数编号的元素,所以这个表中没有元素)。该依据是由图2-27所示程序的第(1)行和第(2)行处理的。第(1)行处理的是list为空的情况,而第(2)行处理的则是list中只含一个元素的情况。请注意,我们在第(2)行中会避免去检查list->next,除非之前在第(1)行中已经确定list不为NULL

归纳。归纳步骤适用于list中至少存在两个元素的情况。第(3)行中局部变量pSecondCell中存放了指向表第二个单元的指针;第(4)行则是使第一个单元的next字段跳过第二个单元,直接指向第三个单元,或者,如果表中只有两个单元,就变为NULL;在第(5)行,我们对除前两个元素之外的整个表递归地调用split函数;而split函数会在第(6)行返回一个指向第二个单元的指针,该指针让我们可以访问由原表中所有偶数编号的元素组成的链表。

split带来的变化如图2-28所示。原始指针用虚线表示,而新指针用实线表示。我们还指出了创建每个新指针的代码行编号。

{%}

图 2-28 split函数的动作

2.8.3 排序算法

递归的排序算法如图2-29所示,该算法可以通过以下依据与归纳步骤来描述。

     LIST MergeSort(LIST list)
     {
         LIST SecondList;(1)      if (list == NULL) return NULL;(2)      else if (list->next == NULL) return list;
         else {
             /* 表中至少有两个元素 */(3)          SecondList = split(list);
             /* 请注意,这样做的副作用是有一半元素会从表中删除 */(4)          return merge(MergeSort(list), MergeSort(SecondList));
         }
     }复制代码

图 2-29 归并排序算法

依据。如果待排序的表为空或长度为1,那么只要返回该表即可,因为它是已排序的。该依据是由图2-29中的第(1)行和第(2)行处理的。

归纳。如果待排序表的长度至少为2,那么在第(3)行使用split函数,从list中删除偶数编号的元素,并使用这些被删除的元素组成另一个表,该表是由局部变量SecondList指向的。第(4)行会递归地为大小减半的表排序,并返回这两个表的归并结果。

示例 2.25

让我们用归并排序为一列一位数数字742897721排序。为求简洁,我们再次省略了数字之间的逗号。首先,通过MergeSort函数第(3)行中对split的调用,表会被分为两个部分。生成的两个表中有一个是由奇数位置的元素组成,另一个则由偶数位置的元素组成。也就是说,这里有list=72971,而SecondList=4872。在第(4)行,这两个表会被排序,结果就成了表12779和2478,然后就会合并成已排序表122477789。

不过,这两个大小减半的表的排序工作并不是凭空进行的,而是通过对该递归算法的合理应用做到的。一开始,如果作为MergeSort参数的表长度大于1,那么MergeSort就会将其分割。图2-30a展示了对表进行递归分割,直到每个表的长度都成1为止。然后分割的表会成对地合并起来,沿着树结构向上,直到整个表完成排序。这个过程如图2-30b所示。不过,值得注意的是,分割和合并操作是交替进行的,而不是在完成所有分割工作后再进行合并。例如,第一半表72971会在开始处理第二半表4872前被完全分割及合并。

{%}

图 2-30 递归的分割和合并



秦皇岛400电话申请开通秦皇岛企业网站建设秦皇岛微信公众号小程序开发运营价格、秦皇岛微信公众号APP软件客户端设计运营、秦皇岛网页页面设计公司费用、秦皇岛公司网站制作方案流程改版维护大概需要多少钱


上往建站提供搭建网站域名注册官网备案服务网店详情页设计企业网店专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管网页美工排版,致力于域名申请竞价托管软文推广全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机网站推广百度竞价托管网站建设上网建站推广服务网络公司有哪些等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


全国咨询热线:400-111-6878

地址:全国各地都有驻点商务

Copyright © 2021 通陆科技

网站建设上往建站