首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。这种方法交租选择排序。

推荐维基百科的解释:选择排序

package Sort;
/*** <p>* Description: 选择排序* </p>* @author zhangjunshuai* @version 1.0* Create Date: 2015年4月6日 上午11:12:37* Project Name: ArithMetic** <pre>* Modification History: *             Date                                Author                   Version          Description * -----------------------------------------------------------------------------------------------------------  * LastChange: $Date:2015年4月6日            $      $Author: zhangjunshuai$          $Rev:1.0 $         * </pre>**/
public class Selection {public static void sort(Comparable[] a){for(int i=0;i<a.length;i++){for(int j = a.length-1;j>i;j--){if(less(a[j],a[i]))exch(a,j,i);}show(a);}}/*** <p>* 是否小于* </p>* @author zhangjunshuai* @date 2015年4月3日 下午4:14:52* @param v* @param w* @return*/private static boolean less(Comparable v,Comparable w){return v.compareTo(w)<0;}/*** <p>* 交换函数* </p>* @author zhangjunshuai* @date 2015年4月3日 下午4:14:32* @param a* @param i* @param j*/private static void exch(Comparable[] a,int i ,int j){Comparable t = a[i];a[i] = a[j];a[j] = t;}/*** <p>* 打印输出* </p>* @author zhangjunshuai* @date 2015年4月3日 下午4:19:03* @param a*/private static void show(Comparable[] a){for(int i = 0; i < a.length; i++){System.out.print(a[i] + " ");}System.out.println();}public static void main(String[] args) {Integer[] a = {1,3,4,5,6,7,3,4,3,45,78,1,26,9,9,6,1};sort(a);/*Character[] b = {'a','b','d','w','e','f','g','y','u','t','q','s','d','l','j','g','g','z'};sort(b);*/}
}

执行结果(注意每次的顺序):

奔走在算法的大路上(一)排序之选择排序相关推荐

  1. 奔走在算法的大路上(一)排序之归并排序

    归并排序(Merge sort)是创建在归并操作上的一种有效的排序算法.该算法是采用分治法(Divide and Conquer)的一个非常典型的应用. 归并操作 归并操作(merge),也叫归并算法 ...

  2. 奔走在算法的大路上(一)排序之希尔排序

    希尔排序是插入排序的一种更高效的改进版本.它的作法不是每次一个元素挨一个元素的比较.而是初期选用大跨步(增量较大)间隔比较,使记录跳跃式接近它的排序位置:然后增量缩小:最后增量为 1 ,这样记录移动次 ...

  3. 奔走在算法的大路上(一)排序之插入排序

    插入排序(Insertion Sort)是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.插入排序在实现上,通常采用in-pla ...

  4. python选择排序从大到小_Python实现选择排序

    一.选择排序简介 选择排序(Selection sort)是一种简单直观的排序算法.选择排序首先从待排序列表中找到最小(大)的元素,存放到元素列表的起始位置(与起始位置进行交换),作为已排序序列,第一 ...

  5. 数据结构—排序算法总结(插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、合并排序、计数排序)

    *排序 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作. 稳定性 在待排序的数组中,如果出现多个相同的关键字,例如:98751555512,中出现重复的数字,在 ...

  6. 排序算法(分类,时间复杂度)(快速排序,插入排序,希尔排序,选择排序,冒泡排序)

    1.排序算法 1.排序的分类 分为内部排序和外部排序,其中内部排序分为插入排序.选择排序.交换排序.归并排序和基数排序.插入排序包括直接插入排序和希尔排序:选择排序包括简单选择排序和堆排序:交换排序包 ...

  7. C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】

    目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...

  8. 常见排序算法详解(插入排序、希尔排序、选择排序、冒泡排序、快速排序)

    1.1 插入排序 步骤: 1.从第一个元素开始,该元素可以认为已经被排序 2.取下一个元素tem,从已排序的元素序列从后往前扫描 3.如果该元素大于tem,则将该元素移到下一位 4.重复步骤3,直到找 ...

  9. C语言实现选择排序——简单选择排序算法

    C语言实现简单选择排序 文章目录 C语言实现简单选择排序 简单选择排序算法 1.交换操作 2.简单选择排序算法实现 项目完整代码 运行效果图 简单选择排序算法 1.交换操作 //交换实现 void s ...

最新文章

  1. php table字段排序,jQuery如何对table进行排序操作的示例详解
  2. nginx 多站点配置方法集合
  3. handler机制的原理
  4. Mat详解-OpenCV
  5. 一文详解 Dubbo 注册发现流程
  6. 图像识别pytorch入门1
  7. 把Excel批注的“红三角”放在单元格左上角_excel批注的玩法,看看你会几个
  8. 【已解决】win10+py3.6+anaconda3 安装fbprophet(利用安装包离线安装)
  9. uIP编译时配置选项
  10. PyCharm 4.5 激活码
  11. java网课|包装类
  12. simulink中S函数格式
  13. 比你拼命的人多的是,最可怕的是比你牛的人比你还拼命(每天看一段一个月刚刚好)
  14. MIMO中SM系统原理与仿真
  15. Debian系统安装
  16. 蓝牙配对码配置错误_“看yellow 的时候,连错了蓝牙耳机,结果....”哈哈哈哈我笑到村里通网!!...
  17. linux串口dtr,串口通信 DTR DSR RTS CTS
  18. 学习excel基本操作——大厂周报(1)
  19. 滴答清单windows_使用预升级清单免费更新到Windows 10头痛
  20. Material Design in Action — 哔哩哔哩动画 Android 客户端

热门文章

  1. 闯入七零八落的中国二次元社群
  2. Python中镜像源的概念及如何在安装时切换镜像源
  3. 第二十一章 Chisel基础——黑盒
  4. 【原创】黑夜路人:如何构建更健壮的在线系统
  5. linux部署tomcat与快速启动
  6. C语言变量随机时间,C语言随机数使用方法
  7. 从Alexa网站排名,看IT门户走势(转)
  8. CentOS6.5使用 Docker 搭建 Java Web 运行环境
  9. 由文心一言发布会引发的思考,聊聊我未来的学习规划
  10. “龟波气功”是如何练成的!