python有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中
时间: 2023-11-11 20:04:49 浏览: 50
python 有一个已经排好序的数组 现输入一个数,要求按原来的规律将它插入数组中 (示例)
5星 · 资源好评率100%
可以使用二分查找算法,寻找插入位置。具体步骤如下:
1. 定义一个函数 `binary_search(arr, left, right, target)`,其中 `arr` 为已排好序的数组,`left` 为数组左边界下标,`right` 为数组右边界下标,`target` 为要插入的目标数。
2. 如果 `left > right`,则插入在 `left` 的位置上,并返回插入后的数组。
3. 计算二分查找的中间位置 `mid`,并比较 `target` 和 `arr[mid]` 的大小关系。
4. 如果 `target < arr[mid]`,则在 `arr[left:mid]` 区间中继续查找。
5. 如果 `target >= arr[mid]`,则在 `arr[mid+1:right+1]` 区间中继续查找。
6. 返回插入后的数组。
代码如下:
```python
def binary_search(arr, left, right, target):
if left > right:
arr.insert(left, target)
return arr
mid = (left + right) // 2
if target < arr[mid]:
return binary_search(arr, left, mid - 1, target)
else:
return binary_search(arr, mid + 1, right, target)
arr = [1, 3, 5, 7, 9]
target = 4
result = binary_search(arr, 0, len(arr) - 1, target)
print(result) # [1, 3, 4, 5, 7, 9]
```
阅读全文