顾名思意,就是直接从待排序数组里选择一个最小(或最大)的数字,每次都拿一个最小数字出来,

顺序放入新数组,直到全部拿完

再简单点,对着一群数组说,你们谁最小出列,站到最后边

然后继续对剩余的无序数组说,你们谁最小出列,站到最后边

再继续刚才的操作,一直到最后一个,继续站到最后边,现在数组有序了,从小到大

举例

先说看每步的状态变化,后边介绍细节,现有无序数组[6 2 4 1 5 9]

第一趟找到最小数1,放到最前边(与首位数字交换)

交换前:| 6 | 2 | 4 | 1 | 5 | 9 |

交换后:| 1 | 2 | 4 | 6 | 5 | 9 |

第二趟找到余下数字[2 4 6 5 9]里的最小数2,与当前数组的首位数字进行交换,实际没有交换,本来就在首位

交换前:| 1 | 2 | 4 | 6 | 5 | 9 |

交换后:| 1 | 2 | 4 | 6 | 5 | 9 |

第三趟继续找到剩余[4 6 5 9]数字里的最小数4,实际没有交换,4待首位置无须交换

第四趟从剩余的[6 5 9]里找到最小数5,与首位数字6交换位置

交换前:| 1 | 2 | 4 | 6 | 5 | 9 |

交换后:| 1 | 2 | 4 | 5 | 6 | 9 |

第五趟从剩余的[6 9]里找到最小数6,发现它待在正确的位置,没有交换

排序完毕输出正确结果[1 2 4 5 6 9]

第一趟找到最小数1的细节

当前数组是| 6 | 2 | 4 | 1 | 5 | 9 |

先把6取出来,让它扮演最小数

当前最小数6与其它数一一进行比较,发现更小数就交换角色

当前最小数6与2比较,发现更小数,交换角色,此时最小数是2,接下来2与剩余数字比较

当前最小数2与4比较,不动

当前最小数2与1比较,发现更小数,交换角色,此时最小数是1,接下来1与剩余数字比较

当前最小数1与5比较,不动

当前最小数1与9比较,不动,到达末尾

当前最小数1与当前首位数字进行位置交换,如下所示

交换前:| 6 | 2 | 4 | 1 | 5 | 9 |

交换后:| 1 | 2 | 4 | 6 | 5 | 9 |

完成一趟排序,其余步骤类似

经典排序算法(八)--选择排序Selection Sort相关推荐

  1. 经典排序算法(一) —— Selection Sort 选择排序

    经典排序算法(一) -- Selection Sort 选择排序 文章目录 经典排序算法(一) -- Selection Sort 选择排序 简介 排序过程 实现 复杂度 简介 选择排序是一种简单直观 ...

  2. 【排序算法】选择排序(Selection sort)

    选择排序(Selection sort)是一种简单直观的排序算法. 选择排序介绍 它的基本思想是: 首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置:接着,再从剩余未排序的元 ...

  3. Java经典排序算法:选择排序,动图演示排序过程

    Java经典排序算法:选择排序,动图演示排序过程 示意动图: public class Main {public static void main(String[] args) {new Main() ...

  4. 排序---初级排序算法(选择排序、插入排序和希尔排序)

    写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera  Algorithms Part1&2 本文 ...

  5. 堆排序算法c语言筛选法,【排序】排序算法之选择排序

    排序算法之选择排序 罗朝辉(http://www.cppblog.com/kesalin) 转载请注明出处 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行 ...

  6. 函数模板案例_利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试

    案例描述: 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试 #include <iostream& ...

  7. 排序算法 | 直接选择排序,算法的图解、实现、复杂度和稳定性分析

    排序算法 | 直接选择排序,算法的图解.实现.复杂度和稳定性分析 目录 1.直接选择排序的原理 2.图解直接选择排序 3.算法代码实现 4.算法复杂度分析.稳定性分析 直接选择排序 1.直接选择排序的 ...

  8. 排序算法(3)选择排序

    排序算法(3)选择排序 原理:思想:两个变种(1)单侧选择:在一个无序数组中选择出每一轮中最大值(或最小值)元素,放到最前面或最后面(升序)(2)双向选择:在一个无序数组中选择出每一轮中最值元素,然后 ...

  9. 【排序算法】选择排序(C语言)

    [排序算法]-- 选择排序 目录 一.选择排序的原理 二.选择排序的代码实现 三.选择排序的优化 1. 优化思路 2. 排序优化后问题 3. 优化代码的实现 四.选择排序的效率 一.选择排序的原理 ​ ...

  10. C语言排序算法之选择排序

    文章目录 一.选择排序的概述 二.选择排序算法代码详解 (1)算法分析 (2)选择排序算法代码详解 三.总代码 一.选择排序的概述 选择排序(Selection sort)是一种简单直观的排序算法. ...

最新文章

  1. wordpress安装
  2. 打不开添加删除程序的故障
  3. Weex Project (npm run android)-Error: Error: Command failed
  4. 在win7环境下使用网络无线共享把电脑变成一台无线路由器
  5. Diango博客--16.稳定易用的 Django 分页库,完善分页功能(二)
  6. eclipse显示行号和Tab、空格、回车
  7. 每日算法系列【LeetCode 556】下一个更大元素 III
  8. Navicat - 导入CSV注意事项
  9. Bentley.Hammer.XM.v08.09.400.34 1CD(水锤和瞬态分析软件)好用版\
  10. 【解决windows】Windows Linux双系统安装历程,超详细
  11. Vue Mapbox-GL 在地图中增加图标、线条、标记点击弹窗、地图平移
  12. oracle创建一个永久性表空间,Oracle表空间简单管理永久表空间
  13. MyExcel 2.1.4 版本发布,多项功能增强
  14. chrome扩展程序_如何实施Chrome扩展程序
  15. erlang send_after 源码剖析
  16. 有人负责,才有质量:写给在集市中迷失的一代
  17. 多商家入驻分销平台开发 多商家入驻分销源码下载
  18. jeremy的路径规划学习:蚁群算法
  19. 深度学习100问-13:深度学习如何制作个人数据集?
  20. Windows 11家庭版

热门文章

  1. 一对一直播app大热,使用源码或自主开发一对一APP需要了解哪些技术?
  2. etymon word flower bee apiary forget out~1
  3. Django 分页器 缓存 信号 序列化
  4. 架构之路(五):忘记数据库
  5. 恩布企业 IM 安卓端 1.1 增强版本
  6. js基础知识(pomelo阅读)
  7. 3.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- Kong 的管理运维
  8. 7.GitLab 创建 merge request
  9. 155.PHP中“==”运算符的安全问题
  10. 7. Nginx 预定义变量