怎么对N个数多线程进行排序啊?

1.数据源:从0~N-1的N个数,随机排列,X[N]
    2.T个线程
    3.要求:使用T个线程对N个数并行排序
        1)每个线程获得自己的序号t
        2)把N个随机排列的数平均分配到T个线程,每个线程获取N/T个数
            数据范围X[N/T*t]...X[N/T*(t+1)-1]
        3)每个线程使用串行排序方法,对分配的局部数据排序
        4)合并所有线程的排序结果

    4.流程如下
        1)生成随机排列的N个自然数
        2)生成T个线程,每个线程获取自己的ID号
        3)每个线程获取自己的数据范围
        4)激活、启动每个线程
        5)所有线程运行结束,同步、合并数据
 

其实就是用归并排序,要大概了解一下归并排序:

归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

归并排序的基本思想
将待排序序列R[0...n-1]看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个长度为2的有序表;
将这些有序序列再次归并,得到n/4个长度为4的有序序列;如此反复进行下去,最后得到一个长度为n的有序序列。

综上可知:
归并排序其实要做两件事:
(1)“分解”——将序列每次折半划分。
(2)“合并”——将划分后的序列段两两合并后排序。

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y