📜  排序数组中的楼层(1)

📅  最后修改于: 2023-12-03 15:39:49.894000             🧑  作者: Mango

排序数组中的楼层

介绍

在某些场景中,需要对已知楼层数组进行排序,以便更快地访问所需楼层。这种需求可能会在电梯、楼梯等场景中出现。本文将介绍两种常见的排序算法:冒泡排序和快速排序。

冒泡排序

冒泡排序是一种简单的排序算法,其思想是将相邻的元素进行比较并交换。通过多次遍历数组,将最大的元素“冒泡”到数组的最后一位。

以下是冒泡排序的示例代码:

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

其中,arr 为待排序的数组。时间复杂度为 $O(n^2)$,空间复杂度为 $O(1)$。

快速排序

快速排序是一种常见的排序算法。其思想是选择一个基准数,将数组分为左右两部分,并对左右两部分分别进行排序,最终将排序后的左右两部分与基准数合并起来。

以下是快速排序的示例代码:

def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[0]
    left = []
    right = []
    for i in arr[1:]:
        if i < pivot:
            left.append(i)
        else:
            right.append(i)
    return quick_sort(left) + [pivot] + quick_sort(right)

其中,arr 为待排序的数组。时间复杂度为 $O(nlogn)$,空间复杂度为 $O(n)$。

总结

本文介绍了两种常见的排序算法:冒泡排序和快速排序。它们都可以用于对已知楼层数组进行排序。冒泡排序时间复杂度为 $O(n^2)$,空间复杂度为 $O(1)$,适用于小规模数据。快速排序时间复杂度为 $O(nlogn)$,空间复杂度为 $O(n)$,适用于大规模数据。根据具体场景需求,可选择合适的算法。