# 选择排序
# 平均时间复杂度 O(n^2)
# 最好情况 O(n^2)
# 最坏情况 O(n^2)
# 空间复杂度 O(1)
# 算法描述:
# (1) 初始状态:无序区为R[1..n],有序区为空;
# (2) 第i趟排序(i=1,2,3…n-1)开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n)。
# 该趟排序从当前无序区中-选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,
# 使R[1..i]和R[i+1..n)分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区;
# (3) n-1趟结束,数组有序化了。
# 例子:[4, 2, 6, 8, 1]
# [1, 4, 6, 8, 2]
# [1, 2, 6, 8, 4]
# [1, 2, 4, 8, 6]
# [1, 2, 4, 6, 8]
# python实现:
def SelectedSort(lists):
## 获取lists的总长度
count = len(lists)
# 一共进行多少轮比较
for i in range(0, count - 1):
for j in range(i, count):
# 用最小index的值分别与后面的值进行比较
if lists[j] < lists[i]:
# 如果找到比当前值小的index,则进行两值交换
lists[i], lists[j] = lists[j], lists[i]
# 打印每一轮比较好的列表
print(i, lists)
return lists
if __name__ == "__main__":
lists = [4, 2, 6, 8, 1]
print(SelectedSort(lists))
选择排序
最新推荐文章于 2025-06-16 15:27:31 发布