排序算法系列:选择排序算法
概述
这是一个相对简单的排序算法。为什么这么说呢?因为不需要什么思考,你就可以掌握并使用它。
版权说明
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
本文作者:Q-WHai
发表日期: 2016年5月24日
本文链接:https://qwhai.blog.csdn.net/article/details/51491810
来源:CSDN
更多内容:分类 >> 算法与数学
目录
文章目录
- 概述
- 版权说明
- 目录
- @[toc]
- 算法原理
- 算法步骤
- 算法实现
- 算法复杂度
- Ref
- Github源码下载
- 征集
算法原理
选择排序算法也需要将一个完整的序列切分成两个部分,一个部分有序,一个部分无序。这一点它和插入排序是一致的。在前面我们说插入排序是将第 [i + 1] 个元素插入到第一部分的有序序列中,如果你还有印象的话。那么在选择排序中则是第 j 个元素(i < j <= n),插入到第 i 个位置。
下面这幅图可以帮助你更好地理解这一点(当然你可以完全不需要图解的帮助)。
算法步骤
- 序列会被人为抽象地分成两个部分,分别定义成序列 T1 和序列 T2(原始序列为 T0)。
- 默认 T1 序列中的第 0 个元素是有序的(因为只有一个元素 a[0] 嘛,自然是有序的);
- 从 i = 0 开始,每次从 T2 中选出一个最小的元素 a[minIndex],将 a[minIndex] 与 a[i] 进行交换;
- 重复过程 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
排序算法系列:选择排序算法相关推荐
- JavaScript算法 之 选择排序
原文来自:微信公众号HTML5学堂 算法的基本概念 算法是什么,它有何作用 为解决一个问题而采取的方法和步骤,称为算法. 我们可以把算法看成一本"福字剪纸教程",其中每一种算法就是 ...
- 排序算法六:选择排序之直接选择排序
排序算法六:选择排序之直接选择排序 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 引言 在我的博文<"主宰世界"的10种算法短评& ...
- 数据结构与算法:选择排序
数据结构与算法:选择排序 雪柯 大工生物信息 提笔为写给奋进之人 已关注 8 人赞同了该文章 引用自算法图解,作者[美] Aditya Bhargava 译袁国忠 特别备注:本书非原创,但部分内容自己 ...
- 排序---初级排序算法(选择排序、插入排序和希尔排序)
写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera Algorithms Part1&2 本文 ...
- 函数模板案例_利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试
案例描述: 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试 #include <iostream& ...
- 排序算法 | 直接选择排序,算法的图解、实现、复杂度和稳定性分析
排序算法 | 直接选择排序,算法的图解.实现.复杂度和稳定性分析 目录 1.直接选择排序的原理 2.图解直接选择排序 3.算法代码实现 4.算法复杂度分析.稳定性分析 直接选择排序 1.直接选择排序的 ...
- php三个数字比较大小排序,php中常用的4种实现数字大小排序的冒泡选择等算法函数代码...
分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中按照从小到大的顺序进行排序. 本站收录这篇文章php中常用的4种实现数字大小排序的冒泡选择等算法函数代码,详细解说文章中相关排序 冒泡 ...
- 数据结构与算法之选择排序
数据结构与算法之选择排序 目录 基本介绍 选择排序思想 代码实现 1. 基本介绍 选择排序也属于内部排序法,是从排序的数据中,按指定的规则选出某一元素,再依次交换位置后达到排序的目的 2. 选择排序思 ...
- 堆排序算法c语言筛选法,【排序】排序算法之选择排序
排序算法之选择排序 罗朝辉(http://www.cppblog.com/kesalin) 转载请注明出处 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行 ...
- 选择排序算法流程图_常用排序算法之选择排序
前两天给大家分享了冒泡排序和插入排序(没关注的同学,可以关注后查看历史消息),今天继续给大家分享另一种常用的排序算法--选择排序. 选择排序 选择排序和插入排序很相似,也区分已排序区间和未排序区间,选 ...
最新文章
- 纯生信发ISME的一次试炼
- MMD_2a_FindSimilarSets
- matlab画图函数plot
- mysql从表中转移数据文件_MySQL 数据文件迁移找不到表
- 百度运营专家:互联网运营必读书目(实用推荐)
- 创客更新装备 动态规划
- Centos7 中文乱码
- 已通过os信号请求关闭服务器,redis(一)内部机制的介绍和启动过程
- qrcode生产带logo_比亚迪换新标?新Logo的含义你了解吗?
- 自由职业半年,我又滚回职场了...
- ffmpeg windows环境下配置(VS2010)
- MarioTCP, take it..
- blender 上一步 下一步_下一步是模拟宇宙
- Windows7安装java
- linux恢复误删除文件
- 如何让小孩练得一手好字?这5个小方法,家长不妨试试
- python制作圆形按钮_圆形按钮tkinter python
- Word也能制作座位表?掌握这个技巧安排座位不慌乱
- [Android6.0][MTK6737] 启动流程分析
- 计算机输入法切换用户,输入法切换不出来电脑输入法不见了的最佳解决方案
热门文章
- 深度探索C++ 对象模型(5)-Initialization list(3)
- 近世代数--群--怎么判断是不是群?
- 【Flask】flask入门以及第一个flask项目的创建
- TF-A代码阅读: 双系统切换时是如何保存寄存器的(cpu_context介绍)
- django之ORM查询操作(二)
- Qt 自定义动画属性 QPropertyAnimation
- [GWCTF 2019]pyre.pyc [CISCN2018]2ex
- 题目1:学生成绩档案管理系统(代码实现)
- 【网络安全】能在Twitter和Instagram上实现信息收集和数据获取的工具
- CmsEasy 漏洞挖掘