首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

冒泡排序如何用多线程实现

2012-04-25 
冒泡排序怎么用多线程实现冒泡排序,当排序的数组很大时,如1000000个元素,怎么用多线程实现,以加快排序速度

冒泡排序怎么用多线程实现
冒泡排序,
当排序的数组很大时,
如1000000个元素,
怎么用多线程实现,
以加快排序速度。
线程函数不知怎么分割,
难道直接上OpenMp?
可以给个代码示例吗?

C/C++ code
        for(int i=1;i<len;i++)            for(int j=len-1;j>=i;j--)                if(*(arr+j)<*(arr+j-1))                    swap(arr+j-1,arr+j);




[解决办法]
嗯......我觉得:

1.单核的cpu上,所谓的“并发处理”,其本质还是划分时间片“一个个的处理”,所以,看似并行,其实还是串行。并发处理,要么用在两件“非强关联”的相对独立的事情上,要么为了加速用户响应。

2.就冒泡排序而言,不仅仅分割开还是“串行”,此外的话,你打算怎么分割呢?例如:随机分成两组1 5 6和2 4 8,两组分别冒泡完毕之后,不能简单合并啊。

看法也不一定完全正确,仅供参考。如果真的想多线程编程,那取决于你用的是windows还是linux,或者别的平台,直接百度应该有一堆示例的

[解决办法]
用快排才是王道。

通常多线程排序估计意义不大,除非用一些特殊的方法。
[解决办法]
没有多CPU(多核不知道会不会并行操作),多线程处理排序没有任何意义,如果有多CPU,冒泡大概不行,用归并把
[解决办法]
用OpenMp开的多线程感觉对代码的要求是没有前值依赖性,如果某段时间的变量值依赖前面运算结果的话用OpenMp肯定会出错误的结果的
[解决办法]
与其在多线程上来解决排序问题,不如从算法上着手解决。

热点排行