一种算法,两种实现-选择排序
选择排序
排序是比较常用的算法,其实有很多种实现,比如冒泡排序,选择排序,归并排序,希尔排序,快速排序等,今天介绍使用Scratch与python语言实现选择排序算法。
选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
动图演示
两种实现算法中,共同属性都包涵:
控制排序轮数的变量i;
控制每轮循环中比较次数的变量j;
记录每轮循环中最小数值的位置的变量minindex;
Scratch实现
首先看下我们的界面,为了方便理解,将所有变量均显示于舞台上:
为了不破坏原列表数据,排序前首先使用重复控件对原列表进行了备份处理,备份后的数据用于后面的排序。在接下来的排序算法中也会使用相同的方法哦!
Scratch使用时,对于学过python、C++等其他编程语言的同学来说可能会有一些疑惑,因为生成的列表下标值从1起始。
最后看下整个排序过程吧:
Python实现
相同的原理,Python实现起来倒是显得简约、直观:
总结
表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。理论上讲,选择排序可能也是平时排序一般人想到的最多的排序方法了吧。