📜  选择排序 - Python (1)

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

选择排序 - Python

选择排序是一种简单的排序算法,它重复地找到未排序部分中的最小元素,并将其放置在排序部分的开头。

算法步骤
  1. 设数组长度为 n,进行 n-1 轮操作
  2. 第 i 轮操作,从第 i 个元素开始到第 n 个元素,找出一个最小值和第 i 个元素交换位置。
代码实现

下面是 Python 实现选择排序的示例代码:

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

代码解释:

  • 第一行定义了一个方法 selection_sort(arr),它接收一个数组 arr 作为参数。
  • 第二行获得数组 arr 的长度 n。
  • 第三行开始进行外层循环,总共进行 n-1 轮操作,从第 0 个元素到第 n-2 个元素。
  • 第四行定义一个 min_index 变量,表示当前找到的最小值的下标。
  • 第五行开始进行内层循环,从第 i+1 个元素到第 n-1 个元素,寻找最小值的下标。
  • 第六行如果找到了一个更小的元素,则更新 min_index 的值。
  • 第七行将第 i 个元素和最小值交换位置。
  • 最后返回排序后的数组 arr。
性能分析

选择排序的时间复杂度为 O(n^2),空间复杂度为 O(1)。即使是在最坏情况下,选择排序的比较次数也不会超过 n(n-1)/2,因此它的时间复杂度的上界为 O(n^2)。

使用示例

下面通过一个示例来演示选择排序的使用。

arr = [64, 34, 25, 12, 22, 11, 90]
print(selection_sort(arr))

输出:

[11, 12, 22, 25, 34, 64, 90]
总结

选择排序是一种简单而有效的排序算法,它的时间和空间复杂度都比较低,可以在处理一些小规模数据的时候使用。但是在面对大规模的数据时,选择排序的速度将变得很慢。