Python实现折半插入排序
时间: 2024-06-05 21:05:49 浏览: 116
折半插入排序(Binary Insertion Sort)是插入排序的一种优化版本,它适用于部分有序的数据集。在插入排序的基础上,通过分治的思想,将数组分为两半进行处理,提高了效率。以下是Python实现折半插入排序的基本步骤:
```python
def binary_insertion_sort(arr):
if len(arr) <= 1:
return arr
# 分治策略:设置基准元素为数组中间的元素
pivot_index = len(arr) // 2
pivot = arr[pivot_index]
# 将数组分为两半,左侧元素都小于或等于基准,右侧元素都大于基准
less_than_pivot = [x for x in arr[:pivot_index] if x <= pivot]
greater_than_pivot = [x for x in arr[pivot_index + 1:] if x > pivot]
# 递归地对两部分进行排序并合并
return binary_insertion_sort(less_than_pivot) + [pivot] + binary_insertion_sort(greater_than_pivot)
# 示例
arr = [9, 5, 1, 7, 3, 6, 8, 2, 4]
sorted_arr = binary_insertion_sort(arr)
print("Sorted array:", sorted_arr)
```
阅读全文