当前位置: 网站首页>小程序开发>网络推广

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

发表日期: 2021-03-27 16:01:49 浏览次数:87

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

常宁,隶属湖南省,是由衡阳市代管的县级市。位于湖南省南部、湘江中游南岸,东隔舂陵水与耒阳市为界,南与郴州市桂阳县相连,西与永州市祁阳县接壤,北濒湘江与祁东县、衡南县二县相望。2020年,常宁下辖14个镇、4个乡、5个街道。境内地势南高北低,大致呈两级阶梯形分布,属亚热带季风性湿润气候。地处北纬26°07'至26°36',东经112°07'至112°41'之间。面积2046.6平方千米 [1]  。

常宁为中国油茶之乡 [2]  、杉木楠竹之乡 [3]  、公交免费城市 [4]  、全国第二批商务综合行政执法试点县级城市 [5]  、全国第三批资源枯竭城市 [6]  。

2018年,常宁市地区生产总值(GDP)331.93亿元,常住人口80.5万人。 [7] 

2018年10月22日,入选2018年全国农村一二三产业融合发展先导区创建名单。 [8]  2019年1月9日,凭借版画入选2018—2020年度“中国民间文化艺术之乡”名单。 [9]  天堂山-西江风景区被评为省级风景名胜区。 [1] 

2019年3月6日,中央宣传部、财政部、文化和旅游部、国家文物局《中央宣传部 财政部,文化和旅游部,国家文物局关于公布《革命文物保护利用片区分县名单(第一批)》的通知》常宁市名列其中。 [10]  2021年1月29日,入选湖南省人民政府公布的2020年度真抓实干成效明显的地区名单。

2.1 本章主要内容

在本章中,我们将介绍以下主要概念。

  • 迭代程序设计(2.2节)。

  • 归纳证明(2.3节和2.4节)。

  • 归纳定义(2.6节)。

  • 递归程序设计(2.7节和2.8节)。

  • 证明程序的正确性(2.5节和2.9节)。

除此之外,通过这些概念的例子,我们还会着重介绍计算机科学中一些有趣的重要思想。其中包括:

  • 排序算法,包括选择排序(2.2节)和归并排序(2.8节)。

  • 奇偶校验及数据错误的检测(2.3节)。

  • 算术表达式及其代数变形(2.4节和2.6节)。

  • 平衡圆括号(2.6节)。

2.2 迭代

新手程序员都会学习使用迭代,采用某种循环结构(如C语言中的for语句和while语句)。在本节中,我们将展示一个迭代算法的例子——“选择排序”。在2.5节中,我们还将通过归纳法证明这种算法确实能排序,并会在3.6节中分析它的运行时间。在2.8节中,我们要展示如何利用递归设计一种更加高效的排序算法,这种算法使用了一种称作“分而治之”的技巧。

常见主题:自定义和依据-归纳

在学习本章时,大家应该注意到有两个主题贯穿多个概念。第一个是自定义(self-definition),就是指概念是依据其自身定义或构建的。例如,我们提到过,表可以定义为空,或一个元素后跟一个表。

第二个主题是依据-归纳(basis-induction)。递归函数通常都含有某种针对不需要递归调用的“依据”实例,以及需要一次或多次递归调用的“归纳”实例进行测试。众所周知,归纳证明包括依据和归纳步骤,归纳定义也一样。依据-归纳这一对非常重要,在后文中每次出现依据情况或归纳步骤时,都会突出标记这些词语。

运用恰当的自定义不会出现悖论或循环性,因为自定义的子部分总是比被定义的对象“更小”。此外,在经过有限个通向更小部分的步骤后,就能到达依据情况,也就是自定义终止的地方。例如,表L 是由一个元素和比L 少一个元素的表构成的。当我们遇到没有元素的表,就有了表定义的依据情况:“空表是表”。

再举个例子,如果某递归函数是有效的,那么从某种意义上讲,某一函数调用的参数必须要比调用该函数的函数副本的参数“更小”。还有,在经过若干次递归调用后,我们必须要让参数“小到”函数不再进行递归调用为止。

2.2.1 排序

要排序具有n个元素的表,我们需要重新排表中的元素,使它们按照非递减顺序排列。

示例 2.1

假设有整数表{3,1,4,1,5,9,2,6,5}。我们要将其重新排列成序列{1,1,2,3,4,5,5,6,9},实现对该表的排序。请注意,排序不仅会整理好各值的顺序,使每个元素的值小于等于接下来那个元素的值,而且不会改变每个值出现的次数。因此,排序好的表中有两个1和两个5,而原表中只出现一次的数字都只有一个。

只要表的元素有“小于”的顺序可言,也就是具备我们通常用符号<表示的关系,就可对这些元素排序。例如,如果这些值是实数或整数,那么符号<就表示实数或整数的小于关系;如果这些值是字符串,就按字符串的词典顺序来排列(“词典顺序”的介绍详见下文附注栏)。有时候,当元素比较复杂,比如当元素是结构体时,就可能使用每个元素的一部分(比如某个特定字段)来进行比较。

词典顺序

要比较两个字符串,通常是依据它们的词典顺序进行比较的。假设c1c2ckd1d2dm是两个字符串,其中每个c 和每个d 都只代表一个字符。字符串的长度k 和m 不一定是相同的。我们假设对字符而言也有<顺序,例如,在C语言中,字符就是小的整数,所以字符常量和字符变量可以在算术表达式中作为整数使用。因此,我们可以使用整数间惯有的<关系,区分两个字符中哪个字符“小于”另一个字符。这种顺序包含这样一个自然的概念,出现在字母表靠前位置的小写字母,要“小于”出现在字母表中靠后位置的小写字母,同样的道理对大写字母也成立。

这样我们可以将字符串的这种顺序称为字典、词典或字母表顺序,如下所示。如果以下任意一条成立的话,我们就说c1c2ckd1d2dm 。

1. 第一个字符串是第二个字符串的真前缀(proper prefix),这表示km,而且对i =1,2,…,k而言,都有ci =di。根据这条规则,就有bat<batter。作为这条规则的特例,可能有k=0,这样第一个字符串就不含任何字符。我们用希腊字母ε 表示空字符串这种不含字符的字符串。当k=0时,规则(1)表示对任何非空字符串s 而言,都有εs

2. 对某个i>0的值,两个字符串的前i-1个字符都相同,但第一个字符串的第i 个字符要小于第二个字符串的第i 个字符。也就是说,对j=1, 2, …, i-1,都有cj =dj,而且cj < dj。根据这条规则,ball<base,因为这两个单词是从第3个字母起开始不同的,而ball的第三个字母是l, 要比base的第三个字母s更小。

ab这一比较关系总是表示,要么ab,要么a 和b 具有相同的值。如果a1a2≤…≤an,也就是说,如果这些值有着非递减顺序,那么我们就说表(a1a2, …, an)是已排序的排序是这样一种操作,它接受任意表(a1a2, …, an),并生成满足如下条件的表(b1b2, …, bn)。

1. 表(b1b2, …, bn)是已排序的;

2. 表(b1b2, …, bn)是原表的排列。也就是说,表(a1a2, …, an)中的每个值出现的次数,和那些值出现在(b1b2, …, bn)中的次数是一模一样的。

排序算法接受任意的表作为输入,并生成对输入进行过排列的已排序表作为输出。

示例 2.2

考虑baseballmoundbatglovebatter这列单词。有了该输入,排序算法会按照词典顺序生成输出:ballbasebatbatterglovemound

2.2.2 选择排序:一种迭代排序算法

假设要对一个具有n 个整数的数组A按照非递减顺序排序。我们可以通过对这个步骤的迭代来完成该工作:找出尚不在数组已排序部分的一个最小元素1,将其交换到数组未排序部分的第一个位置。在第一次迭代中,我们在整个数组A[0..n-1]中找出(“选取”)一个最小元素,并将其与A[0]互换位置。2在第二次迭代中,我们从A[1..n-1]中找出一个最小元素,并将其与A[1]互换位置。继续进行这种迭代。在开始第i+1次迭代时,A[0..i-1]已经是将A中较小的i 个元素按照非递减顺序排序了,而数组中余下的元素则没有特定的顺序。在第i+1次迭代开始前数组A的状态如图2-1所示。

1这里说“一个”最小元素是因为最小值可能出现多次。如果是这样,找到任何一个最小值就行了。

2为了描述数组中某个范围内的元素,我们采用了Pascal语言中的约定。如果A是数组,那么A[i..j]就表示数组A中下标从i 到j 这个范围内的那些元素。

{%}

图 2-1 在进行选择排序的第i+1次迭代前数组的示意图

对名字与值的约定

我们可以将变量视为具有名字和值的框。在提到变量时,比如abc,我们会使用等宽字体来表示其名字;在提到变量abc的值时,我们会使用斜体字,如abc。总之,abc表示框的名字,而abc则表示它的内容。

在第i+1次迭代中,要找出A[i..n-1]中的一个最小元素,并将其与A[i]互换位置。因此,在经过第i+1次迭代之后,A[0..i]已经是将A中较小的i+1个元素按照非递减顺序排序了。在经过第n+1次迭代之后,就完成了对整个数组的排序。

图2-2展示了用C语言编写的选择排序函数。这个名为SelectionSort的函数接受数组A作为其第一个参数。第二个参数n表示的是数组A的长度。

     void SelectionSort(int A[], int n)
     {
         int i, j, small, temp;(1)      for (i = 0; i < n-1; i++) {
             /* 将small 置为剩余最小元素第一次出现时
                的下标*/(2)          small = i;(3)          for (j = i+1; j < n; j++)(4)              if (A[j] < A[small])(5)                  small = j;
             /* 到达这里时,small 是A[i..n-1]
             /* 中第一个最小元素的下标, */
             /* 现在交换A[small]与A[i]。 */(6)          temp = A[small];(7)          A[small] = A[i];(8)          A[i] = temp;
         }
     }复制代码

图 2-2 迭代的选择排序

第(2)到(5)这几行程序从数组未排序的部分A[i..n-1]中选取一个最小元素。我们首先在第(2)行中将下标small的值设为i。第(3)到(5)这几行的for循环会依次考量所有更高的下标j,如果A[j]的值小于A[i..j-1]这个范围内的任何数组元素的值,那么就将small 置为j。这样一来,我们就将变量small的值置为A[i..n-1]中最先出现的那个最小元素的下标了。

在为下标small选好值后,在第(6)到(8)行中,我们要将处于该位置的元素与A[i]处的元素互换位置。如果small=i,交换还是会进行,只是对数组没有任何影响。请注意,要交换两个元素的位置,还需要一个临时的位置来存储二者之一。因此,我们在第(6)行将A[small]里的值移到temp中,并在第(7)行将A[i]里的值移到A[small]中,最终在第(8)行将原来A[small]里的值从temp移到A[i]中。


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

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

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

  网址: https://www.768800.com  网站建设上往建站

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

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

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 昌平殡葬| 朝阳殡葬|

预约专家

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

  

服务热线:400-111-6878