p中位选址python代码
时间: 2023-11-12 13:13:48 浏览: 181
以下是使用快速选择算法实现的 Python 代码:
```python
def partition(arr, low, high):
i = low - 1
pivot = arr[high]
for j in range(low, high):
if arr[j] < pivot:
i += 1
arr[i], arr[j] = arr[j], arr[i]
arr[i+1], arr[high] = arr[high], arr[i+1]
return i+1
def kthSmallest(arr, k):
n = len(arr)
low, high = 0, n-1
while low <= high:
pivot_index = partition(arr, low, high)
if pivot_index == k-1:
return arr[pivot_index]
elif pivot_index < k-1:
low = pivot_index + 1
else:
high = pivot_index - 1
return -1 # 如果k的值超出数组长度,返回-1或其他错误提示信息
# 示例
arr = [10, 7, 8, 9, 1, 5]
k = 3
print("第", k, "小的元素是", kthSmallest(arr, k))
```
其中,`partition` 函数是快速选择算法的关键部分,用于将数组划分成两部分,左侧部分的元素都小于右侧部分的元素,返回划分点的下标。`kthSmallest` 函数则利用 `partition` 函数不断缩小查找范围,直到找到第 k 小的元素或超出数组长度。
阅读全文