当前位置:首页 » 操作系统 » 下沉算法

下沉算法

发布时间: 2024-10-05 21:59:43

1. 地球收缩运动的参数算法与阶段划分

从地球膨胀说,到地球收缩说、地球脉动说,再到地球周期性胀缩论,人类认识地球运动的本质过程经历了从归纳推理到演绎推理到综合认识的演变,这种认识的转变完成了从最初的依据现象假说本质上升到理论联系实际的哲学过程。

在上一节里,讨论了地球膨胀过程的问题,我们说地球膨胀包含两方面内容:一是指地球的整个胀缩运动过程呈膨胀的趋势;二是指地球周期性胀缩过程中的膨胀过程,因此,在讨论地球膨胀阶段划分时,特意将地球收缩阶段单列出。本节的主要论点则集中在地球收缩运动方面。

地球的收缩运动是人们最早认识的地壳构造运动之一。本节将在总结地球收缩运动证据的基础上,提出地球陆块中央的推覆运动模式。对因地球收缩所产生的周长改变量(△L)、半径改变量键则带(△R)、体积改变量(△V)等,分别建立理论计算公式,并对公式中有关参数的取值办法做出相应说明。将地球在收缩力作用下发生收缩运动的过程分为四个阶段,即:体积缩小的初始阶段;周长、表面积减小阶段;收缩力持续增大作用阶段;收缩力持续减小作用阶段。

对地球收缩过程中发生的板块汇聚与冲撞进行理论划分,认为板块之间的压缩效应可分为6种,即:上举式、下沉式、入覆式、包嵌式、推叠式、铆钩式等。

1.收缩参数的求取

1.1地球收缩所产生的周长改变量(△L)

设地球膨胀后收缩前的周长为LA,地球收缩运动结束后切膨胀前的周长为LB,则地球收缩运动所产生的周长改变量

地球动力与运动

式中各参数的单位可以是m、km,但计算中要注意前后单位的统一。

实际工作中,地球周长的改变量可按下式求取:

地球动力与运动

设:i=1,L1为洋壳缩短量(km);

i=2,L2为山体缩短量(km);

i=3,L3为海沟缩短量(km);

i=4,L4为板缘推覆缩短量(km);

i=5,L5为板内推覆缩短量(km);

i=6,L6为逆断裂超覆缩短量(km);

i=7,L7为地层褶皱缩短量(km);

k为遗漏项缩短量(km)。

这盯蔽样,式(4-14)简化为:

地球动力与运动

在运用式(4-15)时,有两点一定要注意:一是,计算时应该是同一高度,特别是全球性的数据问题,如果没有统一的高度,你用海拔0线,他用海拔10m线,或者此地用一个高度值,彼地用另一个高度值,那么,所得结果存在误差,应该根据全球海平面加以校正;二是,计算应该在同一个过地球球心的切面圆周上进行,否则,所统计的结果极容易扩大。

实际计算中,式(4-15)的每一项都是一个累计求和公式:

地球动力与运动

i的变化表示统计项的不同,j的变化表示统计地区的不同。这样,式(4-15)可改写成如下完整形式:

地球动力与运动

计算办法大多是现成的,如平衡剖面法,古地磁分析法等。

平衡剖面法用来计算L2、L4、稿芦L5、L6、L7已有广泛的报道,如曾融生等在计算了喜马拉雅—祁连山的大陆碰撞过程后,得出自50Ma印度次大陆和羌塘块体向特提斯喜马拉雅和拉萨块体地壳挤入的长度分别为508km和429km,等。

古地磁分析法用来计算L1,是一种较能被人接受的办法,尽管误差可能较大,但目前却较为现实。用古地磁数据计算板块间的洋壳消失量的步骤:第一,选定边界条件。找出即将工作的线路应该属于统计地球圆周的线路,选准海拔面所对应的目的层系,找到板块间的缝合处。第二,分析古地磁数据。在缝合带两侧不同的板块上取得各种不同年龄岩石的磁化数据,确定古地磁纬度,做出每一块岩石形成磁化时古磁纬度图。第三,计算洋壳消失量。比较两板块之间的相对位置,划定计算的地史时间段,计算洋壳消失的长度。

由于海沟一直以来被认为是洋壳的消亡处,并没被认为是地球收缩时的产物之一,所以,关于海沟使地壳长度缩短的问题几乎无人计算。计算海沟的缩减量也可以按照上述方法进行。如果想避开海沟,找一条不过海沟的切面也是可以的。

计算地壳周长的缩短量,应该视所选切面的圆周上是否包含式(4-17)中的各项因素,并不是所有的路径都含有洋壳的缩短问题、海沟问题等,计算前可以先进行归类。

图4-16是关于塔里木盆地西北缘柯坪造山带的构造改变量的恢复情况,可见,近东西向的I线推覆量为80km,Ⅱ线推覆量为68km,近南北向的BB′线(图4-16乙)在没有消除东西向推覆影响的前提下,所算出的缩短量达到50%,而CC′线(图4-16丙)的缩短量有28%,这样在喜马拉雅造山期,仅柯坪地区就至少完成了地壳表面积1564km2的收缩量(蔡东升,等,1996)。

1.2地球收缩所产生的半径改变量(△R)

在获得周长改变量之后求半径改变量,可按下式计算:

地球动力与运动

图4-16塔里木盆地西北缘柯坪造山带构造恢复情况(据蔡东升等,1996)

甲—东西向平面断裂恢复;乙—BB′平衡剖面;丙—CC′平衡剖面

1.3地球收缩所产生的体积改变量(△V)

地球的体积改变量由下式计算:

地球动力与运动

式(4-19)中的RA或RB可以通过现代地球物理方法测定,而另一个可求。

可以确定,由于地球的胀缩力在作用时间和作用力绝对值方面存在着差异,地球的膨胀力虽然作用时间较短,但绝对作用力大,所以,所得地球膨胀的体积改变量、半径改变量、表面积改变量、周长改变量的绝对值都将比地球收缩的对应量的绝对值大。就是说地球每绕银核一周,体积将越来越大。

2.地球的收缩模式

收缩力作用于地球的整个阶段无疑都使地球表现为体积的收缩,为了分析问题的方便,现将地球在收缩力作用下发生收缩运动的过程分为四个阶段,即:体积缩小的初始阶段,周长、表面积减小阶段,收缩力持续增大作用阶段,收缩力持续减小作用阶段。

2.1体积缩小的初始阶段

地球体积缩小的初始阶段是指地球从受收缩力作用开始到地壳进行缩短之前的阶段,是一种理想的阶段,实际上无法判断。

即使不考虑温度、物态对物体压缩效应的影响,由于地壳的绝对厚度远小于地球其他层圈的厚度,所以,在同一收缩力作用场的作用下,相等的时间内,地壳的缩短量远小于其他层圈的缩短量累加值。那么,在地球缩小的初始阶段(假定没有地壳的断裂或者形变),就会在岩石圈和软流圈之间形成一个空腔层(见图4-17),如果将空腔的内球和外球壳形成内接,则在内接点的对应侧,出现大体积的空缺,使外层岩石圈形成悬空状态,从而了地壳发生收缩运动的环境。

图4-17地球收缩的初始阶段示意图

(a)地球收缩时各层圈都将产生缩小量,岩石圈的缩小量是其他层圈缩小量的千分之几;(b)将这些缩小量在一侧富集,形成了大量的空腔(实线代表收缩前,虚线代表收缩后)

2.2周长、表面积缩小阶段

周长、表面积缩小阶段是指地壳开始大范围的出现压应断裂到地壳停止大范围出现压性断裂的阶段。这一阶段实质上包含了后面即将谈到的两个阶段。

任何的破碎都是在地壳的最脆弱处进行,地壳板块的结合处无疑是最易破碎处(图4-18),当地球收缩,在岩石圈下产生体积空腔后,地壳在其自身重力作用下,将压力向球壳的四周传递,当压力遇到受力易碎处时,就会形成水平方向的压缩力(图中放大虚框内)。板块1与板块2之间的压缩效应可分为6种(见图4-19)。

图4-18地壳板块的结合处为地壳收缩的优先点,重力可以转变成水平压力

图4-19地球收缩时板块间所体现的压缩方式示意图

(a)上举式(高耸山脉);(b)下沉式(海沟);(c)入覆式;(d)包嵌式;(e)推叠式;(f)铆钩式;A—原板块结合处

图4-19中所列各种并没有包含地壳缩短方式的全部,仅仅是罗列了发生在板块之间的几种大型的使地壳缩短的方式,如图4-20所列方式以及发生在板块内部的小型逆断裂等均未加以考虑。

图4-20印度—欧亚大陆之间的碰撞过程示意图

(1)上举式:这是一种大陆和大陆之间的碰撞方式。一般地,由于大陆和大陆在结合处具有相等或相近的厚度,使得水平压力的受力面积相等,在结合面上形成“僵持”。另外,地球的球体外形使结合面两侧的陆块保持上凸状态,因此,在压力的持续作用下,陆块与陆块最先跟从的方向为向球外突出,即上举。上举变形描述的只是大陆与大陆因地球收缩导致形变的初步,紧随其后的是岩石破碎、断裂、岩层沿断裂面的滑动等,极易造成上举的结束。

(2)下沉式:也是一种大陆和大陆之间的碰撞方式。如果下沉式发生在收缩力持续增加阶段,则下沉式为上举式的继续,如果下沉式在收缩力持续减小阶段产生,则下沉式的结果可能是海沟的一种。

当下沉式作为上举式的继续时,其形成机制是这样的:当A两侧岩层上举,岩层所受作用力超过岩石的最大载荷发生断裂,造成地壳的第一次缩短,缩短量为断裂段的长度。在收缩力的持续作用下,主体段将继续相向靠拢,理论上将发生第二次上举,但是,因为第一上举的最后结果形成了断裂后的岩石堆积,其产生的重力压力改变了A处的初始边界条件,造成了A两侧板块结合带呈下凹态势,从而导致了陆块与陆块的下沉式出现。

引入注目的印度—欧亚板块的碰撞过程,其实包含了上举和下沉的发展过程,尽管之前可能有其他形式的板块间的碰撞,但那已不是陆块和陆块之间的碰撞(见图4-20)。

(3)入覆式:这是一种厚的板块1和薄的板块2发生碰撞体现最多的一种方式。在结合面上,薄壳的承压面小于厚壳的承压面,因而,薄壳的压应力大于厚壳的压应力(图4-21),在持续的压力作用下,薄壳就像一把尖刀,轻松地插入或切削厚壳,最后形成薄壳潜入、厚壳上覆的“入覆式”地壳缩短模式。一般地,洋壳较陆壳薄,所以在板块的碰撞过程中,洋壳总是在陆壳之下出现。

图4-21薄壳板块和厚壳板块碰撞时的承压分析

(a)厚壳,具有大的承压面,因而,单位面积承压量较小;(b)薄壳,具有小的承压面,因而,单位面积承压量较大

(4)包嵌式:也是一种厚的板块1和薄的板块2发生碰撞的方式,与入覆式不同之处在于薄壳没有切削厚壳,也不是潜入到厚壳底下,而是嵌入到厚壳之中,将厚的板块分成上下两部分,形成厚壳包着薄壳,薄壳嵌入厚壳的包嵌式地壳缩短模式。其承压分析同入覆式。

(5)推叠式:当A两侧板块物性相差较大时,板块碰撞就会产生一侧较另一侧更易破裂的形变,从而形成推叠式的地壳缩短模式。这是自然界较发育的一种模式。

(6)铆钩式:这是一种收缩力持续减小阶段产生的板块碰撞模式,它是推叠式发育不全的产物。当收缩力使地壳碰撞发生了形变后,持续的收缩力越来越小,以后所产生的压力形成慢慢释放的状态,以至不能再改变岩石,形成了铆钩式。

2.3地球周长改变量持续增大阶段

地球周长改变量持续增大阶段是指地壳开始大范围的出现压应断裂到老地层不断出现在新地层之上、陆块运移速度迅速并持续增加的阶段。由于收缩力的持续作用,地壳内部物质的收缩量越来越大,“空腔”在单位时间内形成的体积越来越大,导致地球固体表层的承压力越来越大,地壳的形变强度也就越来越大,板块间在完成最初的几种模式接触碰撞后,为适应越来越大的地壳缩短量,即产生强烈的、急促的变形,地壳主体的不断跟进,使原本破碎的断块不断地向外逃逸,形成老地层的接连暴露、飞来峰等。此阶段为地壳缩短的黄金时段,在此时段,那些完成了入覆式碰撞的板块相对运动,则体现出洋壳的急速减退,陆块运移速度迅速加大,如果是封闭的或具有狭窄出口的海洋,此时会形成海进的假象,这种假象的持续时间有半个地球收缩期到整个地球收缩期长,这种假象只有等下一次的地球膨胀运动才消失,但又将造成新的假象。

2.4地球周长改变量持续减小阶段

地球周长改变量持续减小阶段是指老地层不再覆盖新地层、板块运移速度不再迅速提升到地壳停止大范围出现压性断裂的阶段。

在这一阶段里,地壳的弯曲变形幅度由强变弱,慢慢消失。体现在山区地貌上的特征是,由推覆断裂或大型逆掩断裂边缘到盆地边缘是幅度逐渐变小的背斜带,最后生成的背斜两翼甚至没有断裂。如准噶尔盆地的南缘山前褶皱带、昆仑山北缘山前褶皱带等,即是本阶段产物。

综上所述,如果选定一个切面,确定了在这个切面上需要计算的时代地层,在满足了计算前提条件下,分析出这个切面的地壳收缩包含了上举式、下沉式、推叠式、铆钩式和板内褶皱与逆断裂几种地壳的缩短方式。通过计算,分别获得了各种方式的地壳缩短量为△L1、△L2、△L3、△L4、△L5(见图4-22),则地壳在这次收缩运动中周长总收缩量及地壳收缩前的长度可求。

图4-22地球周长的收缩方式示意图

L—地球收缩前的周长;L′—地球收缩后的周长;△L—地球周长收缩量

3.关于地球收缩过程中的地方性裂谷形成

如果以2.5×108a作为地球绕银核的周期,以地球目前处于收缩力持续减小作用阶段为置信水平,那么,地球发生收缩运动的时间长度为约为1.269×108a,这是一个漫长的时间段,在这个时间段内,地球还将绕太阳旋转1.269亿多周,地球受银核与太阳的潮汐力作用形成地球—太阳—银核一线的机会为2.54亿次,如果形成潮汐干涉的几率为亿分之一,则在地球的收缩期内出现地幔潮汐因干涉加强振幅的次数为2~3次,因地幔物质的局部富集而出现局部膨胀,从而将出现在地球收缩过程中的地方性裂谷。

图4-23一个挤压式地堑的例子(据Wise,1963:转引自王燮培等,1992)

地球收缩期形成裂谷和地堑的现象常见报道,如图4-23的例子。

那些在挤压作用之后出现的伸展作用所造成的山中地堑的构造格局的现象也常被人们研究,如:西欧地堑、秘鲁的安第斯山西部地堑(如图4-24)等。

图4-24安第斯山(秘鲁)概略剖面图(据M马托埃,1982)

剖面西部发生伸展,东部发生挤压

图4-23这类与挤压相伴随的张性构造,是属于应力转换的结果,主要作用力与次生作用力的力源相同,都是挤压力,挤压与引张形成的构造在同一地点。图2-24这类在挤压期形成的张性构造,背景为挤压的,局部为张性的,力源不同,挤压力为地球收缩期的大背景力,张性力为地球的潮汐力形成局部峰值所造成,两者作用为先后关系,形成的构造可以不在同一地点。

4.关于地球收缩过程中的地方性海侵

当地球收缩时,收缩力持续增加,地壳周长将会迅速减小,导致板块相对位置改变的速度急速变化,如果这时在两个相对位置迅速的陆块之间为封闭的海洋或开口较小的海洋,那么,在此两陆块间将出现海侵(或海平面上升)。

5.小结

地球的膨胀运动和收缩运动是地球运动产生地质改变的两个大的单元,是不可抗拒的运动,地球上的板块运动属于球面质点运动的一部分,被包含于其中,在各种计算因素中可清楚地看出这点。在矿产普查与勘探中,总是要涉及到各种断裂和褶皱,我们深信,关于地球膨胀阶段和地球收缩阶段的划分及其各种模式的建立,对油气勘探领域、构造单元等的划分将产生帮助。

2. 常见查找和排序算法

查找成功最多要n 次,平均(n+1)/2次, 时间复杂度为O(n)
优点:既适用顺序表也适用单链表,同时对表中元素顺序无要求,给插入带来方便,只需插入表尾即可。
缺点:速度较慢。

改进:在表尾设置一个岗哨,这样不用去循环判断数组下标是否越界,因为最后必然成立。

适用条件:

二分查找的判定树不仅是二叉排序树,而且是一棵理想平衡树。 时间复杂度为O(lbn)

循环实现

递归实现

待排序的元素需要实现 Java 的 Comparable 接口,该接口有 compareTo() 方法,可以用它来判断两个元素的大小关系。

从数组中选择最小元素,将它与数组的第一个元素交换位置。再从数组剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置。不断进行这样的操作,直到将整个数组排序。

选择排序需要 ~N2/2 次比较和 ~N 次交换,==它的运行时间与输入无关==,这个特点使得它对一个已经排序的数组也需要这么多的比较和交换操作。

从左到右不断 交换相邻逆序的元素 ,在一轮的循环之后,可以让未排序的最大元素上浮到右侧。

在一轮循环中,如果没有发生交换,那么说明数组已经是有序的,此时可以直接退出。

每次都 将当前元素插入到左侧已经排序的数组中 ,使得插入之后左侧数组依然有序。

对于数组 {3, 5, 2, 4, 1},它具有以下逆序:(3, 2), (3, 1), (5, 2), (5, 4), (5, 1), (2, 1), (4, 1),插入排序每次只能交换相邻元素,令逆序数量减少 1,因此插入排序需要交换的次数为逆序数量。

==插入排序的时间复杂度取决于数组的初始顺序,如果数组已经部分有序了,那么逆序较少,需要的交换次数也就较少,时间复杂度较低==。

对于大规模的数组,插入排序很慢,因为它只能交换相邻的元素,每次只能将逆序数量减少 1。希尔排序的出现就是为了解决插入排序的这种局限性,它通过交换不相邻的元素,每次可以将逆序数量减少大于 1。

希尔排序使用插入排序对间隔 h 的序列进行排序。通过不断减小 h,最后令 h=1,就可以使得整个数组是有序的。

希尔排序的运行时间达不到平方级别,使用递增序列 1, 4, 13, 40, ... 的希尔排序所需要的比较次数不会超过 N 的若干倍乘于递增序列的长度。后面介绍的高级排序算法只会比希尔排序快两倍左右。

归并排序的思想是将数组分成两部分,分别进行排序,然后归并起来。

归并方法将数组中两个已经排序的部分归并成一个。

将一个大数组分成两个小数组去求解。

因为每次都将问题对半分成两个子问题,这种对半分的算法复杂度一般为 O(NlogN)。

先归并那些微型数组,然后成对归并得到的微型数组。

取 a[l] 作为切分元素,然后从数组的左端向右扫描直到找到第一个大于等于它的元素,再从数组的右端向左扫描找到第一个小于它的元素,交换这两个元素。不断进行这个过程,就可以保证左指针 i 的左侧元素都不大于切分元素,右指针 j 的右侧元素都不小于切分元素。当两个指针相遇时,将切分元素 a[l] 和 a[j] 交换位置。

快速排序是原地排序,不需要辅助数组,但是递归调用需要辅助栈。

快速排序最好的情况下是每次都正好将数组对半分,这样递归调用次数才是最少的。这种情况下比较次数为 CN=2CN/2+N,复杂度为 O(NlogN)。

最坏的情况下,第一次从最小的元素切分,第二次从第二小的元素切分,如此这般。因此最坏的情况下需要比较 N2/2。为了防止数组最开始就是有序的,在进行快速排序时需要随机打乱数组。

因为快速排序在小数组中也会递归调用自己,对于小数组,插入排序比快速排序的性能更好,因此在小数组中可以切换到插入排序。

最好的情况下是每次都能取数组的中位数作为切分元素,但是计算中位数的代价很高。一种折中方法是取 3 个元素,并将大小居中的元素作为切分元素。

对于有大量重复元素的数组,可以将数组切分为三部分,分别对应小于、等于和大于切分元素。

三向切分快速排序对于有大量重复元素的随机数组可以在线性时间内完成排序。

快速排序的 partition() 方法,会返回一个整数 j 使得 a[l..j-1] 小于等于 a[j],且 a[j+1..h] 大于等于 a[j],此时 a[j] 就是数组的第 j 大元素。

可以利用这个特性找出数组的第 k 大的元素。

该算法是线性级别的,假设每次能将数组二分,那么比较的总次数为 (N+N/2+N/4+..),直到找到第 k 个元素,这个和显然小于 2N。

堆中某个节点的值总是大于等于其子节点的值,并且堆是一颗完全二叉树。

堆可以用数组来表示,这是因为堆是完全二叉树,而完全二叉树很容易就存储在数组中。位置 k 的节点的父节点位置为 k/2,而它的两个子节点的位置分别为 2k 和 2k+1。这里不使用数组索引为 0 的位置,是为了更清晰地描述节点的位置关系。

在堆中,当一个节点比父节点大,那么需要交换这个两个节点。交换后还可能比它新的父节点大,因此需要不断地进行比较和交换操作,把这种操作称为上浮。

类似地,当一个节点比子节点来得小,也需要不断地向下进行比较和交换操作,把这种操作称为下沉。一个节点如果有两个子节点,应当与两个子节点中最大那个节点进行交换。

将新元素放到数组末尾,然后上浮到合适的位置。

从数组顶端删除最大的元素,并将数组的最后一个元素放到顶端,并让这个元素下沉到合适的位置。

把最大元素和当前堆中数组的最后一个元素交换位置,并且不删除它,那么就可以得到一个从尾到头的递减序列,从正向来看就是一个递增序列,这就是堆排序。

一个堆的高度为logN,因此在堆中插入元素和删除最大元素的复杂度都为 logN。

对于堆排序,由于要对 N 个节点进行下沉操作,因此复杂度为 NlogN。

堆排序是一种原地排序,没有利用额外的空间。

现代操作系统很少使用堆排序,因为它无法利用局部性原理进行缓存,也就是数组元素很少和相邻的元素进行比较和交换。

计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,==计数排序要求输入的数据必须是有确定范围的整数==。

当输入的元素是 n 个 0 到 k 之间的整数时,它的==运行时间是 O(n + k)==。计数排序不是比较排序,排序的速度快于任何比较排序算法。由于用来计数的数组C的长度取决于待排序数组中数据的范围(等于待排序数组的最大值与最小值的差加上1),这使得计数排序对于数据范围很大的数组,需要大量时间和内存。比较适合用来排序==小范围非负整数数组的数组==。

桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。为了使桶排序更加高效,我们需要做到这两点:

同时,对于桶中元素的排序,选择何种比较排序算法对于性能的影响至关重要。

当输入数据均匀分配到每一个桶时最快,当都分配到同一个桶时最慢。

实间复杂度N*K

快速排序是最快的通用排序算法,它的内循环的指令很少,而且它还能利用缓存,因为它总是顺序地访问数据。它的运行时间近似为 ~cNlogN,这里的 c 比其它线性对数级别的排序算法都要小。

使用三向切分快速排序,实际应用中可能出现的某些分布的输入能够达到线性级别,而其它排序算法仍然需要线性对数时间。

3. 请问洗手间下沉要多少才能安装蹲便器,求具体算法

卫生间下沉30公分。

安装蹲便器之前,首先需要确定它的排污口,同时距离墙面适合的位置要安装好下水的管道,确定下水管道口和地面的位置和距离。

确定了位置,要做好一个凹坑,因为卫生间下成了30公分,设置高度的时候一般来说要高于蹲便器,安装才比较省时。

同时在进水口要做好密封的工作,将进水管插进到蹲便器的进水孔当中,要在蹲便器的周边涂抹上玻璃胶。

将蹲便器安装牢固,接下来就要先放水,看一下有没有漏水的问题。没有漏水,才可以填充,避免周边出现漏水。完成了之后再贴瓷砖,整体效果就出来了。



蹲便器选择带存水弯还是不带存水弯好:

1、卫生间装的蹲便器有的带存水弯,有的就没有,而一般来说带有存水弯要稍微好一些,因为能够解决卫生间反味的问题。

2、存水弯有一个拐弯处,里面存了水,有了水就能够起到防臭的作用,防止有臭气倒流。如果没有,它是直通式的,气味容易返回到卫生间,带了之后就能够起到一个双层的保险作用。

3、如果选择的是带存水弯的蹲便器,安装的时候,高度应该在25~28厘米的范围,有一个容积的深度,不容易发生堵塞的问题。

4. 关于数据结构排序算法的问题

选择排序

插入排序:每次比较后最多移掉一个逆序,因此与冒泡排序的效率相同。但它在速度上还是要高点,这是因为在冒泡排序下是进行值交换,而在插入排序下是值移动,所以直接插入排序将要优于冒泡排序。直接插入法也是一种对数据的有序性非常敏感的一种算法。在有序情况下只需要经过n-1次比较,在最坏情况下,将需要n(n-1)/2次比较。

选择排序:简单的选择排序,它的比较次数一定:n(n-1)/2。也因此无论在序列何种情况下,它都不会有优秀的表现(从上100K的正序和反序数
据可以发现它耗时相差不多,相差的只是数据移动时间),可见对数据的有序性不敏感。它虽然比较次数多,但它的数据交换量却很少。所以我们将发现它在一般情
况下将快于冒泡排序。

冒泡排序:在最优情况下只需要经过n-1次比较即可得出结果,(这个最优情况那就是序列己是正序,从100K的正序结果可以看出结果正是如此),但在最坏情况下,即倒序(或一个较小值在最后),下沉算法将需要n(n-1)/2次比较。所以一般情况下,特别是在逆序时,它很不理想。它是对数据有序性非常敏感的排序算法。
堆排序:由于它在直接选择排序的基础上利用了比较结果形成。效率提高很大。它完成排序的总比较次数为O(nlog2n)。它是对数据的有序性不敏感的一种算法。但堆排序将需要做两个步骤:-是建堆,二是排序(调整堆)。所以一般在小规模的序列中不合适,但对于较大的序列,将表现出优越的性能。

基数排序:在程序中采用的是以数值的十进制位分解,然后对空间采用一次性分配,因此它需要较多的辅助空间(10*n+10), (但我们可以进行其它分解,如以一个字节分解,空间采用链表将只需辅助空间n+256)。基数排序的时间是线性的(即O(n))。由此可见,基数排序非常吸引人,但它也不是就地排序,若节点数据量大时宜改为索引排序。但基数排序有个前提,要关键字能象整型、字符串这样能分解,若是浮点型那就不行了。

热点内容
照片视频加密 发布:2024-10-05 23:58:58 浏览:477
北京java培训班多少钱 发布:2024-10-05 23:49:03 浏览:813
subversion源码安装 发布:2024-10-05 23:48:17 浏览:120
ipad文件怎么解压缩 发布:2024-10-05 23:06:28 浏览:165
存储服务器主控芯片 发布:2024-10-05 23:04:33 浏览:571
php学徒 发布:2024-10-05 23:04:30 浏览:440
活字格手机端清除缓存了什么办 发布:2024-10-05 23:03:23 浏览:872
阿杜访问 发布:2024-10-05 22:44:23 浏览:602
我的世界怎么在别的服务器开挂 发布:2024-10-05 22:31:14 浏览:296
下沉算法 发布:2024-10-05 21:59:43 浏览:998