词条 | 并行排序 |
释义 | 简介并行排序算法是计算机并行计算能力大大发展之后,为了提高排序效率而提出的算法。 划分的设计方法PSRS算法 Viliant归并算法 对数划分 串行算法直接并行化模拟快速排序二叉树上模拟快速排序 串行算法简介:快速排序是一种较为高效的排序算法,它通过不断的划分待排序列为两段,使得前一段总小于或等于某个数,而后一段总大于某个数,这样每次划分就能确定一个数的最终位置。一般情况下,如果每次划分的两个子列大致等长,那么它的时间复杂度是。 在PRAM-CRCW计算模型上利用二叉树网络模拟快速排序 由快速排序的过程,我们可以看到,快速排序实际上就是在构造一棵二叉树,让划分主元位于根节点,使得左子节点小于或等于根而右子节点大于根,最后对整棵二叉树进行一次中序遍历,便可以得到最后排好序的数列。 我们可以选n个处理器分别保存待排序数组A的n个元素,处理器Pi对应一个变量Xi用于存放主元元素的处理器号,以及两个变量L,R分别存放其左右儿子。开始时,每一个处理器都试图往变量root中写入它的处理器号,若果我们使用PRAM-CRCW计算模型,那么就只有一个能够写入root,接着root被复制给每一个处理器的Xi。然后对于每个处理器(除去被原为主元的那个外)判断其值与的大小,从而确定放入还是,同样的,由于并发操作的互斥性,只有一个只能被最终写入,他们就作为下次划分的主元。算法继续进行直到n个主元被选完为止。 时间复杂度分析:由于一层节点的构造时间是Θ(1),所以算法的时间复杂度是Θ(logn) 超立方体上模拟快速排序 超立方体网络是基于超立方体连接构建的网络。网络中以格雷码对各顶点编号。在下面的描述中,设顶点数p = 2,待排序元素共有n个。 超立方体上的快速排序是这样进行的:首先我们将n个元素分配到p个处理器上,为了使问题讨论简单化,假设n是p的整数倍,那么每个顶点将会分到个元素。然后随机选一个主元,各个处理器将每个顶点中的元素按与主元的比较结果分为两部份。这个算法的关键点在这里,对每一个处理器(顶点)在进行第i次划分时,将大于主元的部分都送到超立方体的一个d-i维自立方体中,而将小于主元的部分送到另一个d-i位的子立方体中,这样就模拟了快速排序中的划分算法。子立方体可以这样选择:在第i次划分中判断第i位是0还是1。划分算法到处理完所有1维子立方体后结束。接下来对每个顶点中的元素调用串行算法进行局部排序,最后对整个立方体进行一次遍历便可得到排好序的元素。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。