`
wojiaolongyinong
  • 浏览: 73071 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

算法可视化系列——排序算法——选择排序

阅读更多

排序算法可视化系列——篇二“选择排序”

 

选择排序

 

基本思想分析:

同样是我们在书架上将书的顺序从大到小排列好的事情,今天我们采用不同于上

次的插入排序,我们这次使用选择排序首先我们先分析选择排序的思想,在书架上

有一排高低错落的书,我们需要把这些书排成从低到高的顺序,我们从第一本书的位

置开始,找出这一排书中最矮的,放到第一个位置,将第一本书再放到被取出的那本

书的位置,然后不管第一本书,我们再从第二本书开始,找出剩余书中最矮的,然后

再和第二本书交换位置,以此类推,直到所有的书都有序了,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;
	}
}

 

上面是对选择排序的一个基本实现,主要是用来体会选择排序的基本思想,下面是关于选择排序的动态演示,具体如下:

 

一、 排序中......



 二、 排序中和后面最矮的交换......



 三、排好序......



 程序源代码附加在下(只是其中实现选择排序的一部分,其余在上一个已经给出):

 

  • 大小: 33.7 KB
  • 大小: 33.2 KB
  • 大小: 32.2 KB
分享到:
评论
1 楼 消失的气泡 2013-05-23  
a[j] = a[i];  
a[i] = temp_data;

博主,这个应该是
a[index] = a[i];  
a[i] = temp_data;

,这里已经出循环了,那个j应该属于未定义的变量~
就算j在前边定义了,循环结束后,j跟index也不一定是相等的

相关推荐

    算法可视化系列——排序算法——希尔排序

    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. 有进度条显示排序的...

    MATALB图论算法软件-免编程可直接运行可视化图论算法软件

    软件功能介绍——可视化图论算法软件 该软件是用来求解图论算法。其可求解的算法有:最短路径、最小生成树、拓扑排序、 关键路径、最大流、最小费用最大流,利用最大流还可求解二部图的最大匹配。 使用流程 1.选择图...

    leetcode前两百-awsome-algorithms-Go:在Golang中学习算法的精选资源列表

    关于算法可视化的密集文章。 - 计算机科学中常用算法的大 O 复杂性。 - 关于 A*、IDA*、广度优先搜索、最佳优先搜索等算法如何描述两点 A 和 B 之间路径的视觉表示。 - 开始学习算法可以更好地掌握他们正在学习的...

    C#全能速查宝典

    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 ...

    3D游戏卷2:动画与高级实时渲染技术——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 骨架动画...

    3D游戏卷2:动画与高级实时渲染技术——1

    6.5.3 实例分析3——网格重新划分算法MAPS 附录6.1 数学背景 附录6.2 演示 第三部分 动画制作 第7章 角色动画 7.1 简介 7.2 顶点动画与合成 7.3 骨架动画 7.4 低层次动画管理 7.4.1 行进的路径规划 7.4.2 骨架动画...

    pagerank算法实现 与 networkX进行对比 爬取真实网站数据

    网站关系可视化及PR计算(新闻与政府网站 1.请以“新华网”和“人民网”为起点,在各网站首页上,爬取与他们有超链接关系的其他网站列表,再顺藤摸瓜,爬取列表中各网站首页上,与之有超链接关系的网站列表。如此操作...

    leetcode397-alexnik42:我的GitHub个人资料的配置文件

    不同排序算法(快速排序、归并排序、冒泡排序、插入排序)的可视化。 回购: :light_bulb: 编码算法: 力码 ( :check_mark: 解决了 397 道题:175 道简单,198 道中等,24 道难) - 代码战 :hammer: 我的堆栈: :...

    【毕业设计】基于弱标签视频数据实现监控视频中的交通事故检测.zip

    (3)本文分别基于C3D 特征与I3D 的RGB 和FLOW 模式下的特征实现了基于多实例学习的深度排序算法,接着验证了几种常见的特征融合手段;然后,我们通过结合Min-Max 归一化和哈达玛积的方式成功融合了RGB 和FLOW 特征...

    大数据到底是什么.doc

    现在我们可以通过几个基本要素来衡量一下大数据技术,这就是——流处理、并行性 、摘要索引和可视化。 大数据技术涵盖哪些内容? 一、流处理 伴随着业务发展的步调,以及业务流程的复杂化,我们的注意力越来越集中在...

    程序设计基础(C) 视频.txt

    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知识库

    asp.net 2.0下嵌套masterpage页的可视化编辑 C# 2.0与泛型 动态调用对象的属性和方法——性能和灵活性兼备的方法 泛型技巧系列:用泛型打造可复用的抽象工厂 泛型技巧系列:如何提供类型参数之间的转换 .NET 2.0 ...

    SQL Server 2008商业智能完美解决方案 1/3

    第一部分阐述了商业智能基础、可视化商业智能结果、构建有效的商业智能流程、商业智能解决方案的物理架构、面向架构师的OLAP逻辑设计概念;第二部分面向Analysis Services开发人员,详细介绍了如何使用BIDS以及BIDS...

    SQL Server 2008商业智能完美解决方案 3/3

    第一部分阐述了商业智能基础、可视化商业智能结果、构建有效的商业智能流程、商业智能解决方案的物理架构、面向架构师的OLAP逻辑设计概念;第二部分面向Analysis Services开发人员,详细介绍了如何使用BIDS以及BIDS...

Global site tag (gtag.js) - Google Analytics