《多核程序设计》学习笔记:冒泡排序的并行实现

本文探讨了冒泡排序的并行实现,重点介绍了奇偶排序算法的思想,通过分解冒泡排序的每轮操作为奇数位和偶数位的并行比较与交换。虽然并行算法在理论上可以提升效率,但在实际运行中,由于频繁创建线程导致其时间成本可能超过串行版本。
摘要由CSDN通过智能技术生成

我们都知道冒泡排序的串行算法的实现,非常简单,两个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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值