我们都知道冒泡排序的串行算法的实现,非常简单,两个for循环即可实现,那么并行算法又如何实现呢?
先介绍一下算法思想。
(1)串行算法思想:从左至右依次比较相邻的两个数据,如果左边的数比右边的数大,则交换,这样经过一轮变换后,最大的数据就会移到最右边;然后第二轮只需比较剩余的n-1个数即可,找到次最大的数据;依次类推,直到将这n个数据排好序。
下面是串行冒泡排序算法的核心代码:
for(i=0;i<n-1;i++) //n-1轮
{
for(j=0;j<n-i-1;j++)
{
if(array[j]>array[j+1])
{
tmp=array[j];
array[j]=array[j+1];
array[j+1]=tmp;
}
}
}
(2)并行算法思想:并行算法可以使用奇偶排序是冒泡排序的并行化版本,其思想就是将冒泡排序的每轮操作分解成奇数位和偶数位上的比较、交换,且互不干扰,所以可以并行化。
//#include"stdafx.h"
#i