当前位置: 网站首页>小程序开发>网站优化

衡水小程序制作【衡水企业邮箱】衡水网站外包、衡水微信商城开发、衡水网店美工、衡水淘宝设计

发表日期: 2021-04-13 10:00:34 浏览次数:151

衡水小程序制作【衡水企业邮箱】衡水网站外包、衡水微信商城开发、衡水网店美工、衡水淘宝设计


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

衡水所辖冀州为九州之首。河北省称冀,也缘于此,涌现出了董仲舒、孔颖达、高适、孙犁等知名人物。截至2016年,衡水有国家级非物质文化遗产保护项目6项,省级非遗保护项目33项,市级非遗保护项目55项,境内有衡水湖、武强年画博物馆、冀州城等旅游景点。 [2]  [6-8] 

截至2019年末,衡水市辖2个市辖区,1个县级市,8个县,户籍人口457.8万人,常住人口448.6万人;实现生产总值1504.9亿元,人均生产总值33599元。 2019年10月23日,被确定为“第三批城市黑臭水体治理示范城市”。

示例 4.2

为了直观,我们列举一下微量对象的排列。首先,显然有Π(1)=1。也就是说,如果只有一个对象A,就只有一种次序A

然后考虑有两个对象A 和B 的情况。可以从两个对象中任选其一排列在第一位,而将另一个对象排列在第二位,因此有两种次序:AB 和BA。所以Π(2)=2×1=2 。

接着看看有3个对象AB 和C 的情况。可以从三者中任选其一排在首位。先考虑选择A 排在第一位的情况,这时候剩下B 和C 这两个对象,它们可以按两个对象的两种次序之一分布,从而完成这一排列。因此可以看出,由A 开头的排列有两种,即ABC 和ACB

类似地,如果以B 开头,也有两种方式完成这一序列,对应为剩下的对象A 和C 排序的两种方式,因此有序列BAC 和BCA。最后,如果以C 开头,就可以用两种方式为剩下的对象A 和B 排序,从而得到序列CAB 和CBAABCACBBACBCACAB 和CBA 这6个序列就是3个元素可能排成的所有次序了。也就是说,,Π(3)=3×2×1=6。

接下来考虑一下4个对象ABC 和D 可以形成多少排列。如果选择A 排在首位,那么跟在A之后的对象BC 和D 可以按照6种次序中的任意一种排列。类似地,如果将B 排在第一位,那么剩下的AC 和D 也能按6种次序排列。现在一般模式应该明了了。可以从4个元素中任选一个排在第一位,而对每种选择,都可以按照Π(3)=6种可能方式中的任意一种排列剩余元素。请注意,3个对象的排列数并不取决于这3个元素到底是什么。由此可以得出结论:4个对象的排列数等于4乘以3个对象的排列数。

一般而言,对任意n≥1,有Π(n+1)=(n+1)Π(n)      (4.1)

也就是说,要为n+1个对象的排列计数,可以从n+1个对象中任选一个排在首位。然后剩下的n个对象可以有Π(n)种排列方式,如图4-4所示。在我们的例子中,n+1=4,于是有Π(4)=4×Π(3)=4×6=24 。

图 4-4 n+1个对象的排列

4.3.1 排列公式

等式(4.1)就是2.5节介绍的阶乘函数定义中的归纳步骤。因此不用为Π(n)等于n!感到惊讶。我们可以通过简单的归纳证明这种等价性。

命题 S(n)。对所有的n≥1,有Π(n)=n!。

依据。对n=1,S(1)表示1个对象有1种排列。我们在示例4.2中已经看出这一点了。

归纳。假设Π(n)=n!。那么要证明的S(n+1)就是Π(n+1)=(n+1)!。由等式(4.1),有

Π(n+1)=(n+1)×Π(n)

而根据归纳假设,Π(n)=n!。因此,Π(n+1)=(n+1)×n!。因为

n!=n×(n-1)×…×1

所以一定有(n+1)×n!=(n+1)×n×(n-1)×…×1。而后者的积就是(n+1)!,这就证明了S(n+1)为真。

示例 4.3

根据公式Π(n)=n!,可以得出结论:4个对象的排列数是4!=4×3×2×1=24,正如我们在上面所见的。再举个例子,7个对象的排列数就是7!=5040。

4.3.2 排序要花多久

该排列计数公式有个有趣的用途,就是可用来证明,要为n个元素排序,排序算法至少会花上与n logn成正比的某段时间,除非在排序过程中利用到这些元素的某些特殊属性。例如,在后文附注栏有关特例排序算法的介绍中,可以注意到,如果编写只处理较小整数的排序算法,就可以使运行时间比与n logn成正比的值更少。

不过,如果某个排序算法可以处理任意种类的数据,那么只要这些数据可以通过某种“小于”关系进行比较,该算法确定合适次序的唯一方式就是考量两个元素中的一个是否小于另一个。如果某种排序算法对待排序元素的唯一操作是比较二者以确定它们的相对次序,那么这种算法就可称为通用排序算法(general-purpose sorting algorithm)。例如,第2章中介绍的选择排序和归并排序都是这样作出决定的。即便编写的程序是用来处理整数数据的,也可以将其编写得更具一般性,只要将图2-2第(4)行中

if (A[j] < A[small])复制代码

这样的比较替换成诸如

if (lessThan(A[j], A[small]))复制代码

这类调用布尔值函数的测试即可。

假设有n个不同的元素有待排序。答案(也就是正确的排序次序)可能是这些元素形成的n!种排列中的任意一种。如果用于为任意类型的元素排序的算法能正常工作,它就一定能区分这n!种不同的可能答案。

考虑该算法进行的第一次元素比较,假设是

lessThan(X,Y)复制代码

对这n!种可能的排序次序而言,X 要么小于Y,要么不小于Y。因此,这n!种可能的次序会被划分为两组,分别是第一次测试的答案为“是”的组,以及答案为“否”的组。

这两组中的一组必须至少具有n!/2个成员,因为如果两个组的成员都不足n!/2个,总的次序数就少于n!/2+n!/2个,也就是少于n!种次序。而这一次序数量的上限就限制了我们刚好有n!种次序。

现在考虑第二个测试,假设对X 和Y 进行比较的结果是得出如下结论:两组可能的次序中较大的那组会剩下(如果这两组一样大则任取一组)。也就是说,至少会剩余n!/2种次序必须由算法来区分。第二次比较同样有两种可能的结果,而且剩余的次序中至少有一半会与这些结果之一相同。因此,我们会发现,至少有n!/4种次序与前两次测试的结果一致。

可以重复这一论证,直到算法确定正确的排序次序为止。在每一步中,只要将重点放在含有较多一致可能次序的结果上,就至少会留下一半上一步中得到的可能次序。因此,可以看到这样一系列的测试和结果:在第i次测试后,至少有n!/2i种次序与这些结果相一致。

因为直到每个测试和结果序列最多与一个排序次序一致才会完成排序,所以在完成排序前所进行测试的次数t 要满足

n!/2t≤1      (4.2)

如果对(4.2)式的两边同时取以2为底的对数,就得到log2n!-t≤0,也就是

t≥log2(n!)

我们将看到log2(n!)大约是n log2n。不过首先要看一个分割可能次序的示例。

示例 4.4

考虑一下图2-2所示的选择排序算法在为给定的3个元素(a,b,c)排序时是如何作出判定的。第一次比较发生在a 和b 之间,如图4-5中的顶端所示,其中方框中表示了进行任何测试前,6种可能的次序全部是一致的。在测试后,abcacb 和cab 这些次序与结果为“是”(即ab)的情况一致,而bacbca 和cab 这些次序与相反的结果(也就是b>a)一致。我们再次在方框中展示了每种情况中的一致序(consistentorder)。

在图2-2所示的算法中,较小元素的下标成了变量small的值。因此,接下来要将c 与a 和b 中的较小者进行比较。请注意,接下来要进行何种测试取决于上一次测试的结果。

在进行第二次判定后,3个元素中最小的那个会被移动到数组的第一个位置,而第三次比较则会确定剩下的两个元素中哪个更大。第三次比较是该算法在为3个元素排序时所要进行的最后一次比较。正如我们在图4-5的底部看到的,有时候判定的结果是确定的。例如,如果已经得到ab而且c>b,那么c 就是最小的元素,而且最后一次对a 和b 的比较会得出a更小的结论。

{%}

图 4-5 对3个元素进行选择排序的判定树

在本示例中,所有路径都包含3次判定,而且最后至多存在一种一致序,就是正确的排序次序。不含一致序的两条路径从未出现。(4.2)式说明测试次数t一定至少为log23!,即log26。由于6大于22且小于23,所以可知log26大于2小于3。所以,为3个元素排序的任意算法至少有某个结果序列必须进行3次测试。因为选择排序只需为3个元素进行3次测试,所以处理3个元素时,它最不济也至少与其他算法一样好。当然,随着元素数量不断变多,选择排序就不那么好了,因为它是种O(n2)的排序算法,而且还存在更佳的算法,比如归并排序。

现在必须要估算log2n!有多大。因为n!是从1到nn个整数的积,它肯定要比从n/2到n\frac{n}{2}+1个整数的积大。这\frac{n}{2}+1个整数的积又至少与n/2个n/2的积,也就是(n/2)n/2一样大。因此,log2n!至少是log2((n/2)n/2),即\frac{n}{2}(\log_2n-\log_22),也就是

\frac{n}{2}(\log_2n-1)

对较大的n来说,这一公式约等于(n log2n)/2。

更细致的分析将表明常数因子1/2在这里并非必要。也就是说,log2n!非常接近n log2n,而非更接近它的一半。



衡水小程序制作衡水企业邮箱衡水网站外包、衡水微信商城开发、衡水网店美工、衡水淘宝设计

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

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

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

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

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

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

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

预约专家

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

  

服务热线:400-111-6878