概述

这是一个相对简单的排序算法。为什么这么说呢?因为不需要什么思考,你就可以掌握并使用它。


版权说明

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
本文作者:Q-WHai
发表日期: 2016年5月24日
本文链接:https://qwhai.blog.csdn.net/article/details/51491810
来源:CSDN
更多内容:分类 >> 算法与数学


目录

文章目录

  • 概述
  • 版权说明
  • 目录
    • @[toc]
  • 算法原理
  • 算法步骤
  • 算法实现
  • 算法复杂度
  • Ref
  • Github源码下载
  • 征集

算法原理

选择排序算法也需要将一个完整的序列切分成两个部分,一个部分有序,一个部分无序。这一点它和插入排序是一致的。在前面我们说插入排序是将第 [i + 1] 个元素插入到第一部分的有序序列中,如果你还有印象的话。那么在选择排序中则是第 j 个元素(i < j <= n),插入到第 i 个位置。
下面这幅图可以帮助你更好地理解这一点(当然你可以完全不需要图解的帮助)。


算法步骤

  1. 序列会被人为抽象地分成两个部分,分别定义成序列 T1 和序列 T2(原始序列为 T0)。
  2. 默认 T1 序列中的第 0 个元素是有序的(因为只有一个元素 a[0] 嘛,自然是有序的);
  3. 从 i = 0 开始,每次从 T2 中选出一个最小的元素 a[minIndex],将 a[minIndex] 与 a[i] 进行交换;
  4. 重复过程 3,直到序列 T2 中的元素全部被填入到序列 T1

算法实现

/** 排序算法的核心模块* * @param array*      待排序数组*/private void sortCore(int[] array) {int arraySize = array.length;for (int i = 0; i < arraySize; i++) {int minValue = Integer.MAX_VALUE;int minIndex = 0;for (int j = i; j < arraySize; j++) {if (minValue > array[j]) {minValue = array[j];minIndex = j;}}ArrayUtils.swap(array, minIndex, i);}}

算法复杂度

排序方法 时间复杂度 空间复杂度 稳定性 复杂性
平均情况 最坏情况 最好情况
选择排序 O($n^{2}$) O($n^{2}$) O($n^{2}$) O(n) 稳定 简单

Ref

  • 《大话数据结构》

Github源码下载

  • https://github.com/qwhai/algorithms-sort

征集

如果你也需要使用ProcessOn这款在线绘图工具,可以使用如下邀请链接进行注册:
https://www.processon.com/i/56205c2ee4b0f6ed10838a6d

排序算法系列:选择排序算法相关推荐

  1. JavaScript算法 之 选择排序

    原文来自:微信公众号HTML5学堂 算法的基本概念 算法是什么,它有何作用 为解决一个问题而采取的方法和步骤,称为算法. 我们可以把算法看成一本"福字剪纸教程",其中每一种算法就是 ...

  2. 排序算法六:选择排序之直接选择排序

    排序算法六:选择排序之直接选择排序 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 引言 在我的博文<"主宰世界"的10种算法短评& ...

  3. 数据结构与算法:选择排序

    数据结构与算法:选择排序 雪柯 大工生物信息 提笔为写给奋进之人 已关注 8 人赞同了该文章 引用自算法图解,作者[美] Aditya Bhargava 译袁国忠 特别备注:本书非原创,但部分内容自己 ...

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

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

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

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

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

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

  7. php三个数字比较大小排序,php中常用的4种实现数字大小排序的冒泡选择等算法函数代码...

    分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中按照从小到大的顺序进行排序. 本站收录这篇文章php中常用的4种实现数字大小排序的冒泡选择等算法函数代码,详细解说文章中相关排序 冒泡 ...

  8. 数据结构与算法之选择排序

    数据结构与算法之选择排序 目录 基本介绍 选择排序思想 代码实现 1. 基本介绍 选择排序也属于内部排序法,是从排序的数据中,按指定的规则选出某一元素,再依次交换位置后达到排序的目的 2. 选择排序思 ...

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

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

  10. 选择排序算法流程图_常用排序算法之选择排序

    前两天给大家分享了冒泡排序和插入排序(没关注的同学,可以关注后查看历史消息),今天继续给大家分享另一种常用的排序算法--选择排序. 选择排序 选择排序和插入排序很相似,也区分已排序区间和未排序区间,选 ...

最新文章

  1. 纯生信发ISME的一次试炼
  2. MMD_2a_FindSimilarSets
  3. matlab画图函数plot
  4. mysql从表中转移数据文件_MySQL 数据文件迁移找不到表
  5. 百度运营专家:互联网运营必读书目(实用推荐)
  6. 创客更新装备 动态规划
  7. Centos7 中文乱码
  8. 已通过os信号请求关闭服务器,redis(一)内部机制的介绍和启动过程
  9. qrcode生产带logo_比亚迪换新标?新Logo的含义你了解吗?
  10. 自由职业半年,我又滚回职场了...
  11. ffmpeg windows环境下配置(VS2010)
  12. MarioTCP, take it..
  13. blender 上一步 下一步_下一步是模拟宇宙
  14. Windows7安装java
  15. linux恢复误删除文件
  16. 如何让小孩练得一手好字?这5个小方法,家长不妨试试
  17. python制作圆形按钮_圆形按钮tkinter python
  18. Word也能制作座位表?掌握这个技巧安排座位不慌乱
  19. [Android6.0][MTK6737] 启动流程分析
  20. 计算机输入法切换用户,输入法切换不出来电脑输入法不见了的最佳解决方案

热门文章

  1. 深度探索C++ 对象模型(5)-Initialization list(3)
  2. 近世代数--群--怎么判断是不是群?
  3. 【Flask】flask入门以及第一个flask项目的创建
  4. TF-A代码阅读: 双系统切换时是如何保存寄存器的(cpu_context介绍)
  5. django之ORM查询操作(二)
  6. Qt 自定义动画属性 QPropertyAnimation
  7. [GWCTF 2019]pyre.pyc [CISCN2018]2ex
  8. 题目1:学生成绩档案管理系统(代码实现)
  9. 【网络安全】能在Twitter和Instagram上实现信息收集和数据获取的工具
  10. CmsEasy 漏洞挖掘