当前位置:网站首页>网站建设>行业网站案例

祁东申请400电话费用【祁东企业全国热线电话办理】祁东开通400电话电信价格、祁东微信公众号代运营外包托管、祁东网店编辑装修美工、祁东网站推广优化大概需要多少钱

发表日期: 2021-03-27 16:28:31 浏览次数:12

祁东申请400电话费用【祁东企业全国热线电话办理】祁东开通400电话电信价格、祁东微信公众号代运营外包托管、祁东网店编辑装修美工、祁东网站推广优化大概需要多少钱


祁东县,隶属湖南省衡阳市,地处衡阳市西南部、湘江中游北岸,东西狭长,北高南低,总面积1872平方千米。 [1]  截至2020年6月,祁东县下辖4个街道、17个镇、3个乡。 [2]  共368个行政村(社区居委会),总人口105.8万。

祁东县,因县城在祁山之东而得名。古为扬越之地,春秋时属楚国。祁东境内祁剧为全国优秀剧种之一。明朝重臣宁良、陈荐,清廷尚书陈大受,红军将领王如痴,革命志士曹炎,画家管锄非等都孕育于此。当前有祁东籍将军14人,两院院士2人,省部级领导7人,司级领导78人,处级领导1300多人。

湘桂铁路、娄底—衡阳高速公路、泉州—南宁高速公路、祁永高速穿过祁东境内,另有祁东港归阳港区。 [1]  祁东县是“中国黄花之乡”、“将军之乡”、“黑色金属之乡”、“中国曲艺之乡”、“省级文明县城”、“全省城乡环境卫生十佳县”。2018年4月23日,湖南省政府批准祁东县退出贫困县序列。

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电话费用祁东企业全国热线电话办理祁东开通400电话电信价格、祁东微信公众号代运营外包托管、祁东网店编辑装修美工、祁东网站推广优化大概需要多少钱

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

下一页:北京微信公众号小程序制作公司,北京企业app开发多少钱,北京淘宝网店装修设计费用,北京网络推广营销报价明细,北京微信公众号代运营软文编辑价格,北京企业邮箱域名注册哪家好

想要建网站,请留言,我们的工作人员将尽快与您联系!
  
400-111-6878

备案号: 苏ICP备11067224号-4

CopyRight © 2005-2020 上往建站 All Right Reserved 未经许可不得复制转载

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: https://www.768800.com

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

全国服务热线:400-111-6878