用多线程实现归并排序
作者:聚变
- 2022 年 9 月 22 日 北京
本文字数:610 字
阅读完需:约 2 分钟
一道综合考察 java+算法的小题
import java.util.ArrayList;
import java.util.Arrays;
public class StreamSort {
public static void main(String[] args) {
final int[] ints = {6, 5, 4, 3, 2, 1};
final ArrayList<Integer> r = Arrays.stream(ints).boxed().map(v -> {
ArrayList<Integer> result = new ArrayList<>();
result.add(v);
return result;
}).parallel().reduce((left, right) -> {
ArrayList<Integer> result = new ArrayList<>();
int i = 0, j = 0;
while (i < left.size() && j < right.size()) {
if (left.get(i) <= right.get(j)) {
result.add(left.get(i++));
} else {
result.add(right.get(j++));
}
}
while (i < left.size()) {
result.add(left.get(i++));
}
while (j < right.size()) {
result.add(right.get(j++));
}
System.out.println(Thread.currentThread().getName()+left+right);
return result;
}).get();
System.out.println(r);
}
}
复制代码
涉及到的知识点:
parallelstream
reduce 方法参数
换个思路想想如何用 java 实现 shuffle?
划线
评论
复制
发布于: 刚刚阅读数: 3
版权声明: 本文为 InfoQ 作者【聚变】的原创文章。
原文链接:【http://xie.infoq.cn/article/0764bb84fc15f4c79eab806fa】。文章转载请联系作者。
聚变
关注
还未添加个人签名 2017.10.18 加入
还未添加个人简介
评论