选择排序
2014-04-13 16:16
211 查看
选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。
——quote from wikipedia ( http://zh.wikipedia.org/wiki/%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F)
选择排序,应该是计算机专业的学生接触的最早的,同样也是最最基础的排序算法之一。
下面,以升序排列无序数组 {2,5,1,4,8,3} 为例,说明具体步骤
具体步骤:
1.将无序n位数组分成前后两份,前边的是已经排序过的,后边是无序的:
有序:{ } 无序:{2,5,1,4,8,3}
2.进行选择操作,每次选择时:
a.将无序部分遍历一边,选出其中的最小值(或最大值):
第一次选择中,从数组的无序部分 {2,5,1,4,8,3} 选出了最小值 1
b.将选出的 最小值(最大值)与无序部分的第一个值发生互换:
将 1 与 2 发生互换,{1,5,2,4,8,3},互换之后,1 便加入了有序的部分
有序:{1} 无序:{5,2,4,8,3}
3.循环第 2 个步骤(你会发现,数组的有序部分在增多,无序部分在减少),直到数组全部有序。
java算法实现
个人完整代码请参见github:https://github.com/WangHuaJie/algrethoms/blob/master/choiceSort.java
reference:
1.《Algorithms》(中文版)Robert Sedgewick , Kevin Wayne 著,谢路云 译 P155~P157
2.CSDN "兰亭风雨的专栏“:http://blog.csdn.net/ns_code/article/details/20065107
——quote from wikipedia ( http://zh.wikipedia.org/wiki/%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F)
选择排序,应该是计算机专业的学生接触的最早的,同样也是最最基础的排序算法之一。
下面,以升序排列无序数组 {2,5,1,4,8,3} 为例,说明具体步骤
具体步骤:
1.将无序n位数组分成前后两份,前边的是已经排序过的,后边是无序的:
有序:{ } 无序:{2,5,1,4,8,3}
2.进行选择操作,每次选择时:
a.将无序部分遍历一边,选出其中的最小值(或最大值):
第一次选择中,从数组的无序部分 {2,5,1,4,8,3} 选出了最小值 1
b.将选出的 最小值(最大值)与无序部分的第一个值发生互换:
将 1 与 2 发生互换,{1,5,2,4,8,3},互换之后,1 便加入了有序的部分
有序:{1} 无序:{5,2,4,8,3}
3.循环第 2 个步骤(你会发现,数组的有序部分在增多,无序部分在减少),直到数组全部有序。
java算法实现
public static void sort(int[] arr){ for(int i=0;i
个人完整代码请参见github:https://github.com/WangHuaJie/algrethoms/blob/master/choiceSort.java
reference:
1.《Algorithms》(中文版)Robert Sedgewick , Kevin Wayne 著,谢路云 译 P155~P157
2.CSDN "兰亭风雨的专栏“:http://blog.csdn.net/ns_code/article/details/20065107
/* 1.本文为原创技术文章,首发CSDN个人站点(http://blog.csdn.net/u011429947)。 2.所做文章仅用于相互学习和交流,转载请注明作者及出处。 3.由于个人能力有限,错误之处在所难免,如能指出,非常感谢。 */
相关文章推荐
- 排序——(冒泡,选择,插值)
- MySQL数据库排序选择的作用和该如何选择编码格式
- 【zz】如何选择排序函数
- php实现排序算法第(二)篇 插入排序 选择排序
- 排序算法2--简单选择排序、堆排序
- 算法铺子之排序---选择排序
- Java 选择排序
- 《算法导论》学习笔记之Chapter 2-2.1,2.2,2.3插入排序,选择排序,归并排序
- 选择排序的C++实现
- C++、C#、java算法学习日记02----选择排序(SelectSort)
- 【数据结构】算法10.9 选择排序-简单选择排序
- 算法提高 选择排序
- 选择排序
- “《算法导论》之‘排序’”:初级排序算法(选择、冒泡、插入、希尔)
- 冒泡排序,选择排序,插入排序,希尔排序,合并排序,快速排序算法
- NSTimeTnterval 用法系统排序,冒泡排序,选择排序比较
- java实现各种排序算法(包括冒泡排序,选择排序,插入排序,快速排序(简洁版))及性能测试
- 基础排序算法(冒泡排序、选择排序、插入排序)
- 常用的选择排序.Shell排序.快速排序.冒泡排序.插入排序的算法
- Python 选择排序