python实现选择排序算法
一、选择排序算法实现原理
基本思想
- 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
- 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
- 重复第二步,直到所有元素均排序完毕。
具体步骤
- 从第一个数开始计数基准(为最小值),记录下标
- 循环比较后面的数,记录比基准小的数的下标,直到最后一个数比较后,将当前最小值下标与基准替换
- 从下标为第几次循环开始继续1,2操作,直到循环列表长度-1的次数为止
二、图解选择排序
三、py代码实现选择排序算法
关键代码:
def select_sort(arr):
""" 选择排序:先将第一次选择为最小的一个 然后对后面的所有进行选择,将最小的放入前面
:param arr: 需要排序的数组
"""
if len(arr) <= 1:
return
# 最小值从第一个开始
i = 0
# 外循环控制循环的次数 每一次循环结束,最小的数在最前面
while i < len(arr):
# 从第二个开始比较
j = i + 1
# 当前最小值下标
minIndex = i
# 内循环控制比较的次数
while j < len(arr):
# 如果当前比较值比最小值小 就记住当前下标为最小值下标
if arr[j] < arr[minIndex]:
minIndex = j
j += 1
# 将当前最小值替换当前面
temp = arr[i]
arr[i] = arr[minIndex]
arr[minIndex] = temp
i += 1
运行:
# 定义一个列表
arr = [2, 3, 1, 5, 10, 6, 3, 4, 8]
print(arr)
select_sort(arr)
print(arr)
打印结果:
[2, 3, 1, 5, 10, 6, 3, 4, 8]
[1, 2, 3, 3, 4, 5, 6, 8, 10]