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

代码解释

  1. 遍历数组:使用 for 循环遍历数组,比较每个元素与其下一个元素。
  2. 检查逆序:如果发现某个元素大于其下一个元素,说明数组不是排序的,直接返回 False
  3. 返回结果:如果遍历完数组没有发现逆序,说明数组是排序的,返回 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

注意事项

  1. 非递减顺序:默认情况下,is_sorted 函数检查数组是否是非递减顺序(允许相等的元素)。
  2. 严格递增:如果需要检查严格递增,可以使用 is_strictly_increasing 函数。
  3. 空数组和单元素数组:空数组和单元素数组都被认为是排序的。

视频讲解

BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)