【发布时间】:2016-05-24 07:43:15
【问题描述】:
在我的 java 应用程序中,我需要合并两个按冒泡排序数组排序的数组,我已经创建了三个线程,两个线程对第一个和最后一个部分进行排序,我想第三个线程来合并顺序数组。
有人可以建议我如何解决这个问题吗?
【问题讨论】:
标签: java multithreading bubble-sort
在我的 java 应用程序中,我需要合并两个按冒泡排序数组排序的数组,我已经创建了三个线程,两个线程对第一个和最后一个部分进行排序,我想第三个线程来合并顺序数组。
有人可以建议我如何解决这个问题吗?
【问题讨论】:
标签: java multithreading bubble-sort
让main定义数组并创建3个线程:“bubble1”、“bubble2”和“merger”:
int[] array= ... ;
BubbleThread bubble1=new BubbleThread(array, 0, array.length/2);
BubbleThread bubble2=new BubbleThread(array, array.length/2, array.length);
Merger merger=new Merger(bubble1, bubble2);
bubble1.start();
bubble2.start();
merger.start();
线程“bubble1”从数组的开头应用冒泡排序到length/2 - 1。“合并”等待两个线程的完成;然后合并两个排序的部分:
public void run() {
bubble1.join();
bubble2.join();
// merge the sorted upper and lower halves of the array
}
【讨论】:
wait() 作为下一个准备好的数字。 BubbleThread 的run() 必须在每次外部循环迭代结束时signal()。