排序算法可视化系列——篇二“选择排序”
选择排序
基本思想分析:
同样是我们在书架上将书的顺序从大到小排列好的事情,今天我们采用不同于上
次的插入排序,我们这次使用选择排序。首先我们先分析选择排序的思想,在书架上
有一排高低错落的书,我们需要把这些书排成从低到高的顺序,我们从第一本书的位
置开始,找出这一排书中最矮的,放到第一个位置,将第一本书再放到被取出的那本
书的位置,然后不管第一本书,我们再从第二本书开始,找出剩余书中最矮的,然后
再和第二本书交换位置,以此类推,直到所有的书都有序了,OK!我们的书架整齐了。
这就是选择排序的基本思想。
算法描述:
//假设是对一个n维整型数组进行排序
for(进行循环,直到前n-1个元素被排有序){
for(进行循环,寻找从此刻为止到数组最后一位最小的数){
进行大小判断,记录到此刻为止最小的数值及位置索引
}
将i位置元素与从i~n最小的元素进行交换
}
从上面的算法描述可以看出,外层循环会执行n-1次,内层循环会执行n-i次,并且每
次在最坏情况下都会进行2次赋值,那么我们知道总共执行次数
是n + (n - 1) + ... + 2 + 1 + 2 * n = (n^2 + 5n)/2,则我们知道时间复杂度为O(n^2)
算法Java语言的简单实现:
/** * 选择排序的Java简单实现 * 排序目标是整形数组 */ public void selectSort(int[] a){ /** * 外部循环,只需要到a.length - 1,因为当 * 前n-1个元素排好序时,最后一个必然有序 */ for(int i = 0; i < a.length - 1; i++){ /** * 用于记录当前位置元素,以及索引 * 用于存储从i~n最小元素的值与索引 */ int temp_data = a[i]; int index = i; /** * 循环找出从i~n的的最小元素及索引 */ for(int j = i; j < a.length; j++){ if(a[j] < temp_data){ temp_data = a[j]; index = j; } } /** * 元素进行交换 */ a[j] = a[i]; a[i] = temp_data; } }
上面是对选择排序的一个基本实现,主要是用来体会选择排序的基本思想,下面是关于选择排序的动态演示,具体如下:
一、 排序中......
二、 排序中和后面最矮的交换......
三、排好序......
程序源代码附加在下(只是其中实现选择排序的一部分,其余在上一个已经给出):
相关推荐
NULL 博文链接:https://wojiaolongyinong.iteye.com/blog/1867491
NULL 博文链接:https://wojiaolongyinong.iteye.com/blog/1867026
NULL 博文链接:https://wojiaolongyinong.iteye.com/blog/1871731
NULL 博文链接:https://wojiaolongyinong.iteye.com/blog/1868188
1. 该程序为一个可以展示不同排序算法的排序过程动画,具有良好的图形界面; 2. 一共有三种排序方法——直接插入排序、直接选择排序和冒泡排序快速排序,; 3. 排序元素输入为手动输入; 4. 有进度条显示排序的...
软件功能介绍——可视化图论算法软件 该软件是用来求解图论算法。其可求解的算法有:最短路径、最小生成树、拓扑排序、 关键路径、最大流、最小费用最大流,利用最大流还可求解二部图的最大匹配。 使用流程 1.选择图...
关于算法可视化的密集文章。 - 计算机科学中常用算法的大 O 复杂性。 - 关于 A*、IDA*、广度优先搜索、最佳优先搜索等算法如何描述两点 A 和 B 之间路径的视觉表示。 - 开始学习算法可以更好地掌握他们正在学习的...
2.1.9 Form窗体——可视化界面 136 2.1.10 FormClosed事件——关闭窗体后事件 139 2.1.11 FormClosing事件——关闭窗体前事件 139 2.1.12 Icon属性——设置图标 139 2.1.13 IsMdiContainer属性——设置父窗体 140 ...
6.5.3 实例分析3——网格重新划分算法MAPS 附录6.1 数学背景 附录6.2 演示 第三部分 动画制作 第7章 角色动画 7.1 简介 7.2 顶点动画与合成 7.3 骨架动画 7.4 低层次动画管理 7.4.1 行进的路径规划 7.4.2 骨架动画...
6.5.3 实例分析3——网格重新划分算法MAPS 附录6.1 数学背景 附录6.2 演示 第三部分 动画制作 第7章 角色动画 7.1 简介 7.2 顶点动画与合成 7.3 骨架动画 7.4 低层次动画管理 7.4.1 行进的路径规划 7.4.2 骨架动画...
网站关系可视化及PR计算(新闻与政府网站 1.请以“新华网”和“人民网”为起点,在各网站首页上,爬取与他们有超链接关系的其他网站列表,再顺藤摸瓜,爬取列表中各网站首页上,与之有超链接关系的网站列表。如此操作...
不同排序算法(快速排序、归并排序、冒泡排序、插入排序)的可视化。 回购: :light_bulb: 编码算法: 力码 ( :check_mark: 解决了 397 道题:175 道简单,198 道中等,24 道难) - 代码战 :hammer: 我的堆栈: :...
(3)本文分别基于C3D 特征与I3D 的RGB 和FLOW 模式下的特征实现了基于多实例学习的深度排序算法,接着验证了几种常见的特征融合手段;然后,我们通过结合Min-Max 归一化和哈达玛积的方式成功融合了RGB 和FLOW 特征...
现在我们可以通过几个基本要素来衡量一下大数据技术,这就是——流处理、并行性 、摘要索引和可视化。 大数据技术涵盖哪些内容? 一、流处理 伴随着业务发展的步调,以及业务流程的复杂化,我们的注意力越来越集中在...
1.5.2cbuilder可视化编程环境27 本章小结30 习题31 第2章数据的输入/输出与控制结构34 2.1键盘输入34 2.2屏幕显示输出35 2.3字符数据的输入输出36 2.3.1字符数据的输入与输出36 2.3.2字符串的输入与输出37 2.4程序...
asp.net 2.0下嵌套masterpage页的可视化编辑 C# 2.0与泛型 动态调用对象的属性和方法——性能和灵活性兼备的方法 泛型技巧系列:用泛型打造可复用的抽象工厂 泛型技巧系列:如何提供类型参数之间的转换 .NET 2.0 ...
第一部分阐述了商业智能基础、可视化商业智能结果、构建有效的商业智能流程、商业智能解决方案的物理架构、面向架构师的OLAP逻辑设计概念;第二部分面向Analysis Services开发人员,详细介绍了如何使用BIDS以及BIDS...
第一部分阐述了商业智能基础、可视化商业智能结果、构建有效的商业智能流程、商业智能解决方案的物理架构、面向架构师的OLAP逻辑设计概念;第二部分面向Analysis Services开发人员,详细介绍了如何使用BIDS以及BIDS...