打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
算法系列: 10大常见排序算法(2) 选择排序

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

排序算法有很多, 其中很大一类是通过对数组中的元素进行比较来实现排序, 叫做比较排序。前面介绍的冒泡法和现在介绍的选择排序法,都是最简单直观的比较排序算法。


算法描述

选择排序(Selection sort)的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。

下面我们分步骤介绍:


初始化: 

             排好序的部分是空,

             未排序的部分包括整个输入队列元素

在每个循环pass中

              在未排序的部分找到最小(或者最大)的元素

               把它放到排好序部分的末尾

重复这样的操作:

直到整个数列都排序完毕:


算法改进

上面实现的算法并不是实际中真正使用的选择排序算法。真正的选择排序算法是不需要使用额外的存储空间。 下面我们来巧妙避免使用额外的Memory。

1. 找到最小元素


2.和最左边的没有排序的元素交换


3. 未排序部分的长度减少了1位,未排序部分向右缩小一位

4.一直重复这样的操作,直到全部序列排序完毕:


算法的动图演示(wikipedia)

注:红色表示在当前循环中已经找到的最小元素。

        橘黄色表示已经排序完成的部分。


算法实现

为了便于理解,我们把代码分几步来实现。

请看懂一个示意图后再看下一个示意图,谢谢。

问题来了,想一想,再往下看。

答案是i.


又来一个思考题,别浪费:)

答案:


小测验

  1. 在空格处应该填入什么?


2. 完成下面流程图:



 算法复杂度

练习题答案












算法系列: 10大常见排序算法(1) 冒泡

算法系列: 10大常见排序算法(1) 冒泡

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
数据结构总复习
python列表排序算法分为几种?
关于几种常见排序算法的js代码实现
Java常见排序算法详解——选择排序
选择排序
常见排序算法的实现_排序算法_中国IT实验室专题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服