java多线程排序代码
时间: 2023-10-26 19:16:02 浏览: 94
java多线程排序
5星 · 资源好评率100%
很高兴为您解答关于Java多线程排序代码的问题。以下是一个简单的使用多线程实现快速排序的Java代码示例:
```java
import java.util.Arrays;
public class MultiThreadedQuickSort {
private static int partition(int[] arr, int low, int high) {
int pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j] < pivot) {
i++;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int temp = arr[i + 1];
arr[i + 1] = arr[high];
arr[high] = temp;
return i + 1;
}
private static void quickSort(int[] arr, int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
Thread leftThread = new Thread(() -> quickSort(arr, low, pi - 1));
Thread rightThread = new Thread(() -> quickSort(arr, pi + 1, high));
leftThread.start();
rightThread.start();
try {
leftThread.join();
rightThread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
int[] arr = {10, 7, 8, 9, 1, 5};
int n = arr.length;
quickSort(arr, 0, n - 1);
System.out.println("Sorted array: " + Arrays.toString(arr));
}
}
```
该程序使用多线程快速排序算法对给定数组进行排序。其中,方法 `partition` 用于确定分界点,将数组分为两部分。方法 `quickSort` 使用分界点将数组递归地排序。每次递归创建左子树线程和右子树线程,然后等待子树线程的执行。最终,整个数组将被排序。
阅读全文