Python假设线性表中的数据元素类型为int,请编写函数求线性表的最大元素。分别在顺序表和单链表上实现,并分析时间复杂性
时间: 2024-09-18 14:18:44 浏览: 42
Python中,我们可以为顺序表(数组)和单链表设计两种不同的函数来找到最大元素。
对于顺序表(列表),我们可以直接通过遍历整个列表,将当前访问到的元素与已知最大值比较,如果更大,则更新最大值。以下是示例代码:
```python
def max_in_array(lst):
if not lst: # 避免空列表的情况
return None
max_val = lst[0]
for num in lst:
if num > max_val:
max_val = num
return max_val
# 时间复杂性:O(n),n为列表长度,因为需要遍历所有元素一次
```
对于单链表,由于不能随机访问元素,我们需要从头节点开始遍历直到找到最大元素。以下是链表版本的函数:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def max_in_linked_list(head):
if head is None: # 链表为空
return None
max_val = head.val
current = head
while current:
if current.val > max_val:
max_val = current.val
current = current.next
return max_val
# 时间复杂性:O(n),n为链表的长度,同样需要遍历所有节点
```
在这两个实现中,无论是顺序表还是单链表,时间复杂度都是线性的,因为都需要逐个检查每个元素才能确定最大值。
阅读全文