Python 十大排序---选择排序

转载自: https://blog.csdn.net/zhaobig/article/details/78607714
作者:纳尔逊皮卡丘
来源:CSDN
原文:https://blog.csdn.net/zhaobig/article/details/78607714
版权声明:本文为博主原创文章,转载请附上博文链接!

选择排序(Selection sort)
选择排序:一种简单直观的排序算法。

工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余的未排序的元素中继续寻找最小(大)元素,然后放到已排序的末尾。直到所有元素均排序完毕。

优点:选择排序与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被一道其最终位置上,因为对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。

使用Python代码实现选择排序:

list 传递的参数,order排序 默认为1,升序,否则降序,仅支持整数类型

def selectsort(list, order=1):
if not isinstance(order, int):
raise TypeError(‘order类型错误’)
for i in range(len(list) - 1):
# 记录最小位置
min_index = i
# 筛选出最小数据
for j in range(i + 1, len(list)):
if order == 1:
if list[j] < list[min_index]:
min_index = j
else:
if list[j] > list[min_index]:
min_index = j
# 交换位置
if min_index != i:
list[i], list[min_index] = list[min_index], list[i]
print list

selectsort([1, 4, 9, 6, 3, 100], 1)
时间复杂度:
最优时间复杂度:O(n^2)

最坏时间复杂度:O(n^2)

稳定性:不稳定(考虑升序每次选择最大的情况)

动态图演示:
https://img-blog.csdn.net/20171122201647205?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb2JpZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/charuiyu/article/details/86358992
今日推荐