选择排序

选择排序

·稳定性分析:

不稳定排序:交换操作可能改变相同元素的相对顺序‌

·时间复杂度分析:

1.最坏情况‌:O(n²),无论数据初始状态如何,都需要两层嵌套循环遍历整个数组‌
‌2.平均情况‌:O(n²),与最坏情况相同‌
3.最好情况‌:O(n²),即使数组已排序仍需完整遍历‌

·空间复杂度分析:

O(1):原地排序,仅需常数级额外空间‌

·适用场景:

1.小型数据集或内存受限环境‌
2.对稳定性无要求的场景‌

·对比其他排序算法

特性 选择排序 插入排序 快速排序
平均时间复杂度 O(n²) O(n²) O(n log n)
最坏时间复杂度 O(n²) O(n²) O(n²)
稳定性 ❌ 不稳定 ✅稳定 ✅稳定
空间复杂度 O(1) O(1) O(log n)

python代码:

def selection_sort(arr):
    n = len(arr)                                        # 获取数列长度

    for i in range(n):
        mid_index = i                                   # 先预设无序数列中,最小值为arr[i]
        for j in range(i+1, n):                         # 控制排序范围,0-i为有序数列不需要排序
            if arr[mid_index] > arr[j]:                 # 寻找无序数列中最小值
                mid_index = j
        arr[i], arr[mid_index] = arr[mid_index], arr[i] # 排序关键,将无序最小值和当前arr[i]交换
    
    return arr
s = [97,52,51,75,13,89,34,55,40,40]
print(selection_sort(s))
  
posted @ 2025-07-23 09:49  胡啊花瓜  阅读(42)  评论(0)    收藏  举报