有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中
时间: 2023-05-13 21:05:30 浏览: 90
可以使用二分查找的方法来找到插入位置,具体步骤如下:
1. 定义一个变量 left = 0,right = 数组长度 - 1,mid = (left + right) / 2。
2. 循环执行以下步骤,直到 left > right:
a. 如果要插入的数比 mid 位置的数小,则将 right = mid - 1。
b. 如果要插入的数比 mid 位置的数大,则将 left = mid + 1。
c. 如果要插入的数等于 mid 位置的数,则将插入位置设为 mid,跳出循环。
d. 更新 mid = (left + right) / 2。
3. 将要插入的数插入到插入位置。
4. 如果要插入的数比数组中所有数都大,则将它插入到数组末尾。
完整代码如下:
```python
def insert_num(arr, num):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if num < arr[mid]:
right = mid - 1
elif num > arr[mid]:
left = mid + 1
else:
return mid
arr.insert(left, num)
return left
arr = [1, 3, 5, 7, 9]
num = 4
insert_num(arr, num)
print(arr) # 输出 [1, 3, 4, 5, 7, 9]
```
注意:这里的插入位置是按照原来排序的规律来确定的,即如果要插入的数比数组中某个数小,则插入到这个数的左边,否则插入到这个数的右边。
阅读全文