试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表 (a1, a2,…. an) 逆置为 (an, an-1,…., a1)。
时间: 2024-09-12 09:07:05 浏览: 121
顺序表就地逆置
这是一个简单的算法,用于就地逆置顺序表。假设我们有一个整数数组 `arr` 存储了顺序表的元素,从索引 `0` 开始,我们需要将其逆置。
```python
def reverse_in_place(arr):
# 获取列表长度
n = len(arr)
# 两指针,一个指向开始,一个指向结束
start = 0
end = n - 1
while start < end:
# 交换当前位置的元素
arr[start], arr[end] = arr[end], arr[start]
# 指针向中间移动
start += 1
end -= 1
# 返回逆置后的顺序表
return arr
# 示例
original_list = [1, 2, 3, 4, 5]
reversed_list = reverse_in_place(original_list)
print("逆置后的顺序表:", reversed_list)
```
这个算法通过双指针同时从两端向中间移动并交换元素,直到两个指针相遇。其时间复杂度是 O(n),其中 n 是列表的长度,因为它只需要遍历一次列表。
阅读全文