选择排序入门讲解

什么是选择排序?

选择排序是一种简单直观的排序算法。它的基本思想是:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

选择排序的工作原理

选择排序可以分为两部分:

  1. 查找最小值:在数组中找到最小的那个元素。
  2. 交换位置:将这个元素与当前遍历到的位置进行交换,确保每次遍历结束后,在已处理过的部分都找到最小的数。

下面通过一个简单的例子来说明选择排序的过程。

算法步骤

  1. 从数组的第一个元素开始,将其视作当前子序列中最大的(或最小)的值。
  2. 依次比较后面的每一个元素与当前假设的最小值。
  3. 如果找到更小(或更大)的数,则将这个数的位置记录下来。
  4. 遍历结束后,将该位置与当前遍历到的位置交换。
  5. 将未处理部分再重复上述步骤。

代码实现

下面是一个使用 Python 实现的选择排序算法:

def selection_sort(arr):
    n = len(arr)
    for i in range(n):
        # 假设当前位置是最小的
        min_index = i
        
        # 找到剩余未排序元素中的最小值
        for j in range(i+1, n):
            if arr[j] < arr[min_index]:
                min_index = j

        # 交换找到的最小值与当前元素
        if min_index != i:
            arr[i], arr[min_index] = arr[min_index], arr[i]

# 示例数组
arr = [64, 25, 12, 22, 11]
selection_sort(arr)
print("排序后的数组:", arr)

时间复杂度

选择排序的时间复杂度为 O(n^2),其中 n 是数组的长度。这是因为每次都需要进行一次遍历来找到最小值,再进行交换操作。

空间复杂度

选择排序的空间复杂度为 O(1),因为它只需要常数级的额外空间来进行元素的交换和比较。

优缺点分析

优点

缺点

通过上述内容的学习,你应该对选择排序有了基本的了解。希望这些内容对你有所帮助!