排序网络

次排序算法基于计算的一种比较网络模型,可以同时执行多个比较操作

 

 

比较网络:

  排序网络是总能对其他输入进行排序的比较网络

  比较网络仅由线路和比较器构成

  比较器是具有两个输入x和y以及两个输出x'和y'的一个装置,它执行下列函数:

    x'=min(x,y);     y'=max(x,y);

  我们把具有n个输入的比较网络画成一个由n条水平线和垂直伸展的比较器的组合。

  运行时间:从输入线路接收到其值的时刻,到所有输出线路收到其值所话费的时间

  深度:

    比较网络的输入线路深度为0

    比较器的输出线路的深度为:max(输入线路深度)+1

    比较器的深度为其输出线路的深度

    比较网络的深度是它的输出线路的最大深度

  排序网络是指对每个输入序列,其输出序列均为单调递增的一种比较网络

 

 

0-1原理:

  0-1原理:如果对于属于集合{0,1}的每个输入值,排序网络都能正确运行,则对任意的输入值,它也能正确运行。

    0-1原理使得我们可以把注意力集中于对由0和1组成的输入序列进行相应操作,一旦构造好排序网络,

    并证明它能对所有的0-1序列进行排序时,运用0-1原理,来说明它能对任意值的序列进行正确的排序

 

 

双调排序网络:

  要构造有效的排序网络,第一步是构造一个能对任意双调序列进行排序的比较网络

  双调排序:是指序列要么先单调递增后再单调递减,或者循环移动成为先单调递增后再单调递减

 

 

半清洁器:

  双调排序由一些阶段组成,其中每一个阶段称为一个半清洁器,

  每个半清洁器是一个深度为1的比较网络,其中输入线i与输入线i+n/2进行比较,i=1,2····,n/2

  当由0和1组成的双调序列作用于半清洁器输入时,半清洁器产生一个满足下列条件的输出序列:

    较小的值位于输出的上半部,较大的值位于输出的下半部,并且两部分序列仍然是双调的,

    事实上,两部分序列中至少有一个部分是清洁的——全由0或全由1组成。

 

 

双调排序器:

  通过递归地连接半清洁器,就可以建立一个双调排序器

 

 

双调排序器:

  通过递归地连接半清洁器,就可以建立一个双调排序器,它是一个对双调序列进行排序的网络

 

 

合并网络:

  合并网络:能把两个已排序的输入序列合并为一个有序的输出序列的网络。

 

posted @ 2013-12-05 21:33  褐色键盘  阅读(690)  评论(0)    收藏  举报