选择排序

选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对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算法实现

public static void sort(int[] arr){
	    for(int i=0;i
   
   

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.由于个人能力有限,错误之处在所难免,如能指出,非常感谢。
*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值