排序算法(五)——简单选择排序
来源:互联网 发布:画框图软件 编辑:程序博客网 时间:2024/05/18 00:49
排序
简单选择排序:
基本思想:选择排序的主要操作是选择,其主要思想是:每趟排序在当前待排序序列中选出关键码最小的记录,添加到有序序列中。 第i 趟在n-i+1(i=1,2,…,n-1)个记录中选取关键码最小的记录作为有序序列中的第i个记录。选择排序的特点就是记录移动的次数比较少。当读者听到这个名字—简单选择排序,是不是就觉得很简单呢?其实,简单选择排序思想也比较简单,比上一节的快速排序可能更好理解。
下面来通过一个例子简单了解下吧。
具体实现过程:
(1)将整个序列划分成有序区和无序区,初始化有序区为空,无序区为整个待排序列。
(2)在无序区中选取最小记录,将它与无序区中的第一个交换,使得有序区的记录扩展了一个,同时无序区的记录少了一个。
(3)重复第二步,知道无序区只剩下一个记录为止,此时全部记录都为从小到大的有序序列。
/** * 选择排序:简单选择排序 */@Overridepublic void selectSort(T[] t) {for(int i = 0; i < t.length; i++){ //对n个记录进行n趟简单选择排序T min = t[i]; int minIndex = i; //标记最小记录位置for(int j = i+1; j < t.length; j++){ //在无序区中选择最小记录if(compare(t[j], min)){// t[j] 小于 min 返回truemin = t[j];minIndex = j;}}t[minIndex] = t[i];// 将最小记录与无序区第一个交换t[i] = min;}System.out.println("简单选择排序:");print(t);}
上面的compare 、 print 方法将在讲解完全部排序介绍,这里仍然才用泛型。
性能分析:
(1)可以看出,简单选择排序记录的移动次数较少,待排序列为正序时,移动次数最少,为0次;待排序列为逆序时,移动次数最多,为3(n-1)次。
(2)无论记录的初始序列如何,关键码的比较次数相同,第i趟排序需要进行n-i 次比较,而又要需要n次排序,所以总的比较次数为 O(N*N)。
(3)所以简单选择排序,最好、最坏的时间性能为 O(N*N)。
稳定性:
若两个记录A和B值相等,但是排序后A、B的先后次序保持不变,则这种排序是稳定的,否则就是不稳定。简单选择排序是一种不稳定的排序算法。
1 0
- 排序算法(五)——简单选择排序
- (五)简单排序—选择排序
- 排序算法(五) 简单选择排序
- java算法之五简单选择排序(选择排序)
- 简单选择排序算法----(排序算法五)
- 五、排序算法之简单算法——冒泡排序、简单选择排序和直接插入排序
- 算法——排序(五)选择排序
- 常用算法总结之排序(五)----简单选择排序
- 排序算法之选择排序——简单选择排序
- 排序算法——简单选择排序
- 排序算法——简单选择排序
- 排序算法——简单选择排序
- 排序算法(一)——简单选择排序
- 排序算法(五)- 选择排序
- 排序算法(五)选择排序
- 算法之选择排序——简单选择排序
- 五、排序算法(选择排序、插入排序、希尔排序)
- 基本排序方法之五——简单选择排序
- ThinkPHP框架总结之安全及使用
- 四维超体运动在三维空间的表现1(使用three.js)
- 第一博客,行走在编程道路上的菜鸟
- HDU 4614 Vases and Flowers(线段树+2分)
- [BZOJ 2180]最小直径生成树
- 排序算法(五)——简单选择排序
- 编程之路
- windows客户端开发--通过ShellExecute函数打开浏览器
- U-boot启动流程分析 Start.s 汇编文件
- JDBC 简单入门
- cento7 crontab
- jquery validate使用Demo实例说明
- Activity、Window、View的关系
- 偶尔回顾一下C99先于C11(末)