麻烦给我写个多线程排序
时间: 2023-06-28 13:04:14 浏览: 45
好的,以下是一个基于多线程的归并排序实现:
```python
import threading
def merge_sort(arr):
if len(arr) > 1:
mid = len(arr) // 2
left_arr = arr[:mid]
right_arr = arr[mid:]
left_thread = threading.Thread(target=merge_sort, args=(left_arr,))
right_thread = threading.Thread(target=merge_sort, args=(right_arr,))
left_thread.start()
right_thread.start()
left_thread.join()
right_thread.join()
i = j = k = 0
while i < len(left_arr) and j < len(right_arr):
if left_arr[i] < right_arr[j]:
arr[k] = left_arr[i]
i += 1
else:
arr[k] = right_arr[j]
j += 1
k += 1
while i < len(left_arr):
arr[k] = left_arr[i]
i += 1
k += 1
while j < len(right_arr):
arr[k] = right_arr[j]
j += 1
k += 1
return arr
```
这个函数使用了递归的方式进行归并排序,并且对于每一次递归,都会开启两个新线程来处理左半部分和右半部分的排序。在线程完成之后,等待两个线程退出后进行合并操作。这样可以同时处理左右两个部分,从而提高了排序的效率。