046. 编写一个函数,检查一个数组是否是排序的
在 Python 中,可以通过遍历数组并比较相邻元素来检查数组是否已经排序。
示例代码
def is_sorted(arr):
"""
检查数组是否是排序的(非递减顺序)。
参数:
arr (list): 输入数组。
返回:
bool: 如果数组是排序的,返回 True;否则返回 False。
"""
# 遍历数组,比较相邻元素
for i in range(len(arr) - 1):
if arr[i] > arr[i + 1]: # 如果当前元素大于下一个元素,数组不是排序的
return False
return True # 如果遍历完数组没有发现逆序,数组是排序的
# 测试代码
arr1 = [1, 2, 2, 3, 4, 5]
arr2 = [1, 3, 2, 4, 5]
print("数组 arr1 是否排序?", is_sorted(arr1)) # 输出:True
print("数组 arr2 是否排序?", is_sorted(arr2)) # 输出:False
运行结果
运行上述代码后,输出如下:
数组 arr1 是否排序? True
数组 arr2 是否排序? False
代码解释
- 遍历数组:使用
for
循环遍历数组,比较每个元素与其下一个元素。 - 检查逆序:如果发现某个元素大于其下一个元素,说明数组不是排序的,直接返回
False
。 - 返回结果:如果遍历完数组没有发现逆序,说明数组是排序的,返回
True
。
扩展:检查是否严格递增
如果需要检查数组是否是严格递增的(即每个元素都小于其下一个元素),可以稍微修改代码:
def is_strictly_increasing(arr):
"""
检查数组是否是严格递增的。
参数:
arr (list): 输入数组。
返回:
bool: 如果数组是严格递增的,返回 True;否则返回 False。
"""
for i in range(len(arr) - 1):
if arr[i] >= arr[i + 1]: # 如果当前元素不小于下一个元素,数组不是严格递增的
return False
return True
# 测试代码
arr1 = [1, 2, 3, 4, 5]
arr2 = [1, 2, 2, 3, 4]
print("数组 arr1 是否严格递增?", is_strictly_increasing(arr1)) # 输出:True
print("数组 arr2 是否严格递增?", is_strictly_increasing(arr2)) # 输出:False
注意事项
- 非递减顺序:默认情况下,
is_sorted
函数检查数组是否是非递减顺序(允许相等的元素)。 - 严格递增:如果需要检查严格递增,可以使用
is_strictly_increasing
函数。 - 空数组和单元素数组:空数组和单元素数组都被认为是排序的。
视频讲解
BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)