云南网站建设,企业信息化软件定制开发

专业提供昆明网站建设, 昆明软件开发, 云南网站建设,企业信息化软件定制开发服务免费咨询QQ932256355

博客园 首页 新随笔 联系 订阅 管理

选择排序Python怎么写?

选择排序(Selection Sort)是一种简单直观的排序算法。它的基本思想是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。以下是使用 Python 实现选择排序的详细介绍:

代码实现

def selection_sort(arr):
    # 获取数组的长度
    n = len(arr)
    # 遍历数组中的每一个元素
    for i in range(n):
        # 假设当前位置的元素是最小的
        min_idx = i
        # 从当前元素的下一个位置开始遍历,找到最小元素的索引
        for j in range(i + 1, n):
            if arr[j] < arr[min_idx]:
                min_idx = j
        # 将找到的最小元素与当前位置的元素交换
        arr[i], arr[min_idx] = arr[min_idx], arr[i]
    return arr

# 测试代码
arr = [64, 25, 12, 22, 11]
sorted_arr = selection_sort(arr)
print("排序后的数组:", sorted_arr)

代码解释

  1. 外层循环for i in range(n),这个循环控制当前正在处理的元素位置,它会遍历数组中的每一个元素。
  2. 假设最小元素:在每次外层循环开始时,假设当前位置 i 的元素是最小的,将其索引 i 赋值给 min_idx
  3. 内层循环for j in range(i + 1, n),从当前元素的下一个位置开始遍历数组,找到最小元素的索引。如果发现比当前假设的最小元素更小的元素,就更新 min_idx 为该元素的索引。
  4. 交换元素:内层循环结束后,将找到的最小元素与当前位置 i 的元素进行交换。通过 arr[i], arr[min_idx] = arr[min_idx], arr[i] 实现元素交换。
  5. 返回结果:当外层循环结束时,数组就完成了排序,最后返回排序好的数组。

复杂度分析

  • 时间复杂度:选择排序的时间复杂度是 O(n^2),因为有两层嵌套的循环,对于长度为n 的数组,需要进行大约n(n-1)/2 次比较。
  • 空间复杂度:选择排序只需要常数级的额外空间,空间复杂度为 O(1),因为只需要几个额外的变量来存储索引和临时元素。

稳定性分析

选择排序是一种不稳定的排序算法。所谓不稳定,是指在排序过程中,相等元素的相对顺序可能会发生改变。例如,对于数组 [5, 8, 5, 2],第一次选择最小元素 2 与第一个 5 交换后,两个 5 的相对顺序就发生了变化。

posted on 2025-02-20 15:32  TekinTian  阅读(61)  评论(0)    收藏  举报