欢迎光临散文网 会员登陆 & 注册

选择排序(Selection Sort)

2022-08-29 21:10 作者:游侠翻滚  | 我要投稿

基本概念

选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

动画演示:

选择排序

红色的是当次循环最小值,黄色的是已执行完的数据,绿色的是当前搜索的元素

从上图我们可以很明显的看出来选择排序的执行方式,对此我们进行总结了几点:

1. 读入数据存放在a数组中

2. 在a[1]~a[n]中选择值最小的元素与第一位的元素进行调换,则把最小的元素放在a[1]中

3. 在a[2]~a[n]中选择值最小的元素与第二位元素进行调换,则把最小的元素放在a[2]中

4. 直到第n- 1个元素与第n个元素比较排序为止(重复执行该内容)

选择排序的缺点也很明显且致命,即

1,时间复杂度高。

2,不是稳定的排序算法,因为每次找到最小的值后会进行交换位置的操作。

3,最坏和最好情况都是O(n²)的复杂度。若有n个元素则都得执行n次。

这个排序方法是表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好。这个排序唯一的好处可能就是不占用额外的内存空间吧。

程序实现

 程序实现方法,用两层循环完成算法,外层循环i 控制当前序列最小值存放的数组位置,内层循环j 值控制从i +1到序列中最小的元素所在位置k。

具体操作如下:


好了,选择排序就讲到这里了

在此,部分借鉴了知乎阿杰同学(https://zhuanlan.zhihu.com/p/449501682)

模板以及部分代码借鉴了《信息学奥赛一本(C++)》

选择排序(Selection Sort)的评论 (共 条)

分享到微博请遵守国家法律