Python全系列 教程
3567个小节阅读:5929.5k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾
以此类推,直到所有元素均排序完毕
xxxxxxxxxx
def selection_sort(nums:list[int]) ->None:
# 设置要几轮循环才可以排序完成
for i in range(0,len(nums)-1):
# 默认认为最小的是没排序后第1个数据
min_index = i
# 找到最小数据的索引位置
for j in range(i+1,len(nums)):
if nums[j] < nums[min_index]:
min_index = j
# 交换索引位置上的数据
nums[i],nums[min_index] = nums[min_index],nums[i]
时间复杂度为 $O(n^2)$、非自适应排序:外循环共 n−1 轮,第一轮的未排序区间长度为 n ,最后一轮的未排序区间长度为 2 ,即各轮外循环分别包含 n、n−1、…、3、2 轮内循环,求和为 $\frac {(n−1)(n+2)} {2} $
空间复杂度 $O(1)$、原地排序:指针 i 和 j 使用常数大小的额外空间。
非稳定排序:非稳定
实时效果反馈
1. 关于选择排序算法,说法正确的是?
A 选择排序需要反复比较相邻的元素
B 选择排序需要俩俩比较元素
C 选择排序只能从小到大排序
D 选择排序只能从大到小排序
答案
1=>B