写一个分别用堆排序及快速排序算法,对待排序记录进行排序并输出排序结果的代码
时间: 2024-05-10 07:17:59 浏览: 3
以下是Python语言实现堆排序和快速排序的代码:
堆排序:
```python
def heap_sort(arr):
n = len(arr)
for i in range(n // 2 - 1, -1, -1):
heapify(arr, n, i)
for i in range(n - 1, 0, -1):
arr[i], arr[0] = arr[0], arr[i]
heapify(arr, i, 0)
return arr
def heapify(arr, n, i):
largest = i
left = 2 * i + 1
right = 2 * i + 2
if left < n and arr[left] > arr[largest]:
largest = left
if right < n and arr[right] > arr[largest]:
largest = right
if largest != i:
arr[i], arr[largest] = arr[largest], arr[i]
heapify(arr, n, largest)
```
快速排序:
```python
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
```
以上两段代码都是使用递归实现的,堆排序在建堆和重构堆的过程中需要使用heapify函数,快速排序则是使用了分治的思想,将数组分成三部分,分别排序后再合并。