hwyzw 发表于 2025-4-7 01:47:28

衡水网站制作建设公司_衡水网站建设_衡水网站开发公司_网站公司

    书生商友信息科技有旗下品牌,上往专门为您提供各类网站相关服务,包括网站建设、网站制作、做网站、网站设计、网站优化等;还提供全方位、一站式的电子商务综合解决方案。有企业网站制作,有企业做网站,有企业建网站,有企业网站设计,有企业网站优化,还有响应式网站、地区网站设计。

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

    衡水有网站建设相关业务,也就是衡水网络公司在做。在衡水可以进行做网站的工作,同时还能开展衡水微信公众号的开发,以及衡水网站的设计,并且可以制作衡水的小程序。

    衡水是河北省的一个地级市。它位于河北省东南部。其地理位置介于东经 115°10′至 116°34′,北纬 37°03′至 38°23′之间。东部与沧州市以及山东省德州市相邻。西部与石家庄市相接壤。南部与邢台市相连接。北部与保定市和沧州市交界。总面积为 8815 平方公里。衡水市位于河北冲积平原,其地势从西南往东北缓缓倾斜,海拔在 12 米至 30 米之间。它属于大陆季风气候区,属于温暖半干旱型气候。这里是京津重要的农副产品加工供应基地。衡水属于环渤海经济圈和首都经济圈的“1+9+3”计划京南区,是环渤海区域合作市长联席会议的成员市,被费孝通称作“黄金十字交叉处”。

    冀州为衡水所辖,它是九州之首。河北省之所以称冀,缘由也在此。这里涌现出了董仲舒、孔颖达、高适、孙犁等知名人物。到 2016 年时,衡水拥有国家级非物质文化遗产保护项目 6 项,省级非遗保护项目 33 项,市级非遗保护项目 55 项。境内存在衡水湖、武强年画博物馆、冀州城等旅游景点。

    2019 年末的时候,衡水市有 2 个市辖区,1 个县级市以及 8 个县。其户籍人口为 457.8 万人,常住人口是 448.6 万人。在 2019 年,该市实现了生产总值 1504.9 亿元,人均生产总值为 33599 元。2019 年 10 月 23 日,它被确定为“第三批城市黑臭水体治理示范城市”。

    3.10.函数

    首先要介绍函数,接着在图 3 - 28 中再次展示该函数。对于参数大小的合适量度 n 为待排序表的长度。在此,我们会用 T(n)来表示处理长度为 n 的表的运行时间。

    我们选取 n 等于 1 的情况当作依据情况,而 n 大于 1(会发生递归调用)的情况则当作归纳情况。如果对其进行研究,就会知晓,除非是从另一个函数中调用参数为空表的情况,否则是无法在参数为空表的情况下进行调用的。原因在于,只有当表中至少有两个元素,也就是分拆后得到的两个表中都至少有一个元素时,才会执行第(4)行。因此可以忽略n=0的情况,并直接从n=1开始进行归纳证明。

    LIST (LIST list)

    LIST ;

    如果 list 为 NULL ,则返回 NULL 。

    如果 list 的下一个节点为 NULL ,那么就返回 list 。

    else {

    /* 表中至少有两个元素 */

    (3)      = split(list);

    (4)      merge((list), ());

    复制代码

    图 3-28归并排序算法

    如果 list 仅由一个元素组成,那么就会执行第(1)行和第(2)行,其他代码则不会被执行。所以,在这种依据的情况下,T(1)属于 O(1)。

    归纳。在归纳的情况里,第(1)行的测试失败了,同时第(2)行的测试也失败了。所以能够执行第(3)行和第(4)行的程序块。为了把问题简化,可以假定 n 是 2 的乘方。做出这种假定的好处在于,当 n 为偶数时,恰好能将表分割成两个长度均为 n/2 的等分。如果 n 是 2 的乘方,那么 n 除以 2 也是 2 的乘方。每次递归结束时,二分出来的都是等分的表。一直到每个表中只包含一个元素为止。当 n 大于 1 时,所花费的时间为下列各项的和。

    1. 两次测试所花的O(1)。

    第(3)行进行了赋值操作,同时调用了 split 函数,这一过程所花费的时间为 O(1) 或者 O(n) 。

    3. 第(4)行对第1次递归调用所花的T(n/2)。

    4. 第(4)行对第2次递归调用所花的T(n/2)。

    https://img0.baidu.com/it/u=3887189758,1222940014&fm=253&fmt=JPEG&app=138&f=JPEG?w=836&h=456

    5. 第(4)行调用merge所花的O(n)。

    6. 第(4)行的返回语句所花的O(1)。

    跳过某些值的归纳法

    读者不必为函数分析中所涉及的新型归纳法而担忧。在证明过程中,我们跳过了除 2 的乘方之外的所有数值。通常来讲,如果 i1、i2 等是与我们要证明的命题 S 相关的一列整数,那么可以证明 S(i1)作为依据。并且对于所有的 j,能够证明 S(i1)可推出 S(ij + 1)。一般情况下,我们所认为的对 j 进行归纳的归纳证明是这样的。更确切地说,定义命题 S' 为 S'(j)=S(ij)。接着通过对 j 进行归纳来证明 S'(j)。如此一来,可能有 i1 = 1、i2 = 2、i3 = 4 等情况,其一般形式为 ij = 2j - 1。

    请注意,顺便提一句,的运行时间 T(n)不会随 n 的增加而减少。所以,若证明了对等于 2 的乘方的 n 有 T(n)是 O(n logn),那就证明了对所有的 n 都有 T(n)是 O(n logn)。

    将这些项加起来之后,由于调用 split 和 merge 的 O(n)更大,所以舍弃 O(1)。这样就能得出在归纳情况中,其运行时间边界为 2T(n/2)+O(n)。从而得到以下递推关系。

    依据。T(1)=O(1)。

    归纳。T(n)等于 2 乘以 T(n/2)再加上 O(n),这里的 n 是 2 的乘方并且 n 大于 1。

    下一步是要用含具体常数的函数去替代大 O 表达式。我们在依据部分用常数 a 来替换 O(1),同时在归纳步骤中用 bn 来替换 O(n),这样递推关系就发生了变形,变为……

    依据。T(1)=a。

    归纳。T(n)等于 2 乘以 T(n/2)再加上 bn,这里的 n 是 2 的乘方并且 n 大于 1。

    这一递推关系比之前我们所了解的更为困难,不过我们依然能够运用相同的技巧。其一,可以针对一些较小的 n 值,直接写出 O(n)的值。其依据表明了 T(1)=a,而归纳步骤则向我们传达了

    T(2)= 2T(1) + 2b= 2a + 2b

    T(4)等于 2 乘以 T(2)再加上 4b,即 2 乘以(2a + 2b)再加上 4b,结果为 4a + 8b。

    T(8)等于 2 乘以 T(4)再加上 8b,即 2 乘以(4a + 8b)再加上 8b,等于 8a + 24b

    T(16)等于 2 乘以 T(8)再加上 16b,也就是 2 乘以(8a + 24b)再加上 16b,结果为 16a + 64b

    直接看出接下来的情况并非易事。a 的系数与 n 的值是同步的,这意味着 T(n)等于 n 乘 a 再加上一定数量的 b。然而,b 的系数比 n 增长得更快。b 的系数与 n 的关系可归纳为:

    n 的值24816

    b 的系数

    比率1234

    比率由系数 b 除以 n 得到。所以,似乎 b 的系数是 n 乘上一个因子,这个因子在 n 每次翻倍时会增长 1。具体而言,我们能看出这个比率是 log2n,因为 log22 等于 1,log24 等于 2,log28 等于 3,且等于 4。因此推测递推关系的解是 T(n)=an+bn log2n 是合理的,并且对于表示 2 的乘方的 n 而言是这样的。我们将会看到这个公式是正确的。

    要求解该递推关系,需先依照前面示例中采用的策略。我们把归纳规则写成关于参数 m 的函数形式,形如

    当 m 是 2 的乘方且 m 大于 1 时,T(m)等于 2 乘以 T(m 除以 2)再加上 bm(3.5)

    接着从 T(n)着手,借助(3.5),用具有较小参数的表达式去替换 T(n)。在这种情形下,需要替换的表达式是关于 T(n/2)的。也就是,首先存在

    T(n)=2T(n/2)+bn(3.6)

    https://img2.baidu.com/it/u=2678275258,2860295036&fm=253&fmt=JPEG?w=1228&h=581

    接下来,把(3.5)利用起来,把 m 换成 n/2,这样就能得到替换(3.6)中 T(n/2)的那个表达式。具体而言,(3.5)表明 T(n/2)=2T(n/4)+bn/2,并且我们能够将(3.6)替换为

    T(n)等于 2 乘以(2T(n/4)加上 bn/2)再加上 bn,即 2 乘以 2T(n/4)加上 2 乘以 bn/2 再加上 bn,等于 4T(n/4)加上 2bn

    然后,可以用 n/4 去替代(3.5)里的 m,这样就能把 T(n/4)替换为 2T(n/8)+bn/4,进而得到

    T(n)等于 4 乘以(2T(n/8)加上 bn/4)再加上 2bn,即 8T(n/8)加上 3bn。

    我们要通过对i的归纳证明的命题就是

    命题 S(i)。当 1 小于等于 n 且 n 小于等于以 2 为底 n 的对数时,T(n)等于 2i 乘以 T(n 除以 2i)再加上 ibn。

    对于 i = 1 ,命题 S(1)表明 T(n) = 2T(n/2) + bn 。此等式属于归并排序运行时间 T(n)的定义中的归纳规则,由此可以得知依据是成立的。

    归纳。如同那些归纳假设为“如果……那么……”形式的归纳证明那样,如果 i 处于假设范围之外,那么归纳步骤就必定成立。在此,当 i≥log2n 时,属于这种简单的情况,此时 S(i+1)显然是成立的。

    再来看看困难的情况,假设i

    T(n/2i)等于 2 乘以 T(n 除以 2i 加 1 的结果)再加上 bn 除以 2i,这是等式(3.7)的内容。

    将(3.7)的右边来替换 S(i)里面的 T(n/2i),这样就能够得到。

    T(n)等于 2 的 i+1 次方乘以 T(n 除以 2 的 i+1 次方)加上(i+1)乘以 bn。

    最终的等式就是命题S(i+1),这样就证明了归纳步骤。

    于是可以得出 S(i),对于在 1 和 log₂n 之间的任意 i ,T(n)=2iT(n/2i)+ibn 是成立的。现在需考虑公式 S(log₂n)

    T(n)=(n/)+(log2n)bn

    请回想一下,log2n 的定义是,要使 2 变为 n,需要对 2 进行乘方的次数。我们知道这一情况。同时还有 n 不等于 1 这一条件。因此,S(log2n)可以被写为。

    T(n)=nT(1)=bn log2n

    由T 的定义中的依据,还知道T(1)=a。因此,

    T(n)=an+bn log2n

    经过这段分析之后,需要把常数 a 和 b 替换为大 O 表达式。也就是说,T(n)是 O(n)加上 O(n logn)。因为 n 比 n logn 增长得更慢,所以能够忽略 O(n)这一项,直接表明 T(n)是 O(n logn)。这也就意味着,归并排序算法的时间量级为 O(n logn)。请记住,我们已经证实了选择排序的运行时间为 O(n2)。尽管严格来说,这里的 O(n2)仅仅是一个上界,但实际上它是选择排序的最紧简单边界。所以,可以明确,随着 n 持续变大,归并排序始终会比选择排序运行得更快。从实际情况来看,对于值大于几十的 n 而言,归并排序比选择排序更快。

    请记住,在大 O 表达式里,我们无需为对数去指定底数。因为这里的对数处于常数因子之中,所以所有底数的对数都是相同的。

    衡水网站建设【衡水网络公司】衡水做网站、衡水微信公众号开发、衡水网站设计、衡水小程序制作

    书生商友信息科技旗下品牌:上往专业为您提

    服务热线: 手机微信同号:(各城市商务人员可上门服务)
页: [1]
查看完整版本: 衡水网站制作建设公司_衡水网站建设_衡水网站开发公司_网站公司