选择排序算法在每一步中选取最小值来重新排序,通过选择和交换来实现排序。
  具体流程如下:
  1、首先从原数组中选择最小的1个数据,将其置于第一个位置。
  2、然后从剩下的数据中再选择其中最小的一个数据,并将其置于原数组的第二个位置。
  3、不断重复选择和交换的过程,直至最后排序完成。
  假如有初始数据:25  11  45  26  12  78。
  1、第一轮排序,从原数组中选择出最小的数据,并将其置于第一个位置。第一轮排序后,顺序为:[11, 25, 45, 26, 12, 78]。
  2、第二轮排序,从剩下的数据中再选择出其中最小的一个数据,并将其置于原数组的第二个位置。第二轮排序后,顺序为:[11, 12, 45, 26, 25, 78]。
  ....... 
  3、最终顺序为:[11, 12, 25, 26, 45, 78]。
 
  选择排序是不稳定的排序。选择排序的时间复杂度和空间复杂度分别为 O(n2 ) 和 O(1) (选择排序只需要一个额外空间用于数组元素交换)。
  Java 代码实现如下:(https://github.com/xbk417/algorithm
public void sort(int[] arr) {
int tmp;
// 第n轮排序过程中的较小数的下标
int small; for(int i = 0; i < arr.length - 1; i++) {
small = i;
// 找出最小的数的下标
for(int j = i + 1; j < arr.length; j++) {
if(arr[j] < arr[small]) {
small = j;
}
}
// 交换
if(small != i) {
tmp = arr[i];
arr[i] = arr[small];
arr[small] = tmp;
}
System.out.println(i + ":" + Arrays.toString(arr));
}
}

常用算法Java实现之选择排序的更多相关文章

  1. 排序算法Java实现(选择排序)

    算法描述:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录与第一个记录的位置进行交换:接着对不包括第一个记录以外的其他记录进行第二轮比较,得到最小的记录并与第二个记录进行位置交换:重复 ...

  2. 算法-java代码实现选择排序

    选择排序  

  3. 常用算法Java实现之希尔排序

    希尔排序严格来说是基于插入排序的思想,又被称为缩小增量排序. 具体流程如下: 1.将包含n个元素的数组,分成n/2个数组序列,第一个数据和第n/2+1个数据为一对... 2.对每对数据进行比较和交换, ...

  4. 算法——蛮力法之选择排序和冒泡排序c++实现

    这次实现的是蛮力法中的两个例子,选择排序法和冒泡排序法,使用的编译环境是vs2013,下面对这两个算法做一个简单介绍,然后是两个算法的c++实现代码. 选择排序法比较的范围是整个列表,每次扫描结束找出 ...

  5. Java常用的经典排序算法:冒泡排序与选择排序

     一.冒泡排序                             冒泡排序(Bubble Sort)是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为 ...

  6. 我在北京找工作(二):java实现算法<1> 冒泡排序+直接选择排序

    工作.工作.找工作.经过1个多星期的思想斗争还是决定了找JAVA方面的工作,因为好像能比PHP的工资高点.呵呵 :-)  (其实我这是笑脸,什么QQ输入法,模拟表情都没有,忒不人性化了.) 言归正传, ...

  7. Java排序算法(二):简单选择排序

    [基本思想] 在要排序的一组数中.选出最小的一个数与第一个位置的数交换:然后在剩下的数中再找出最小的与第二个位置的数交换,如此循环至倒数第二个数和最后一个数比較为止. 算法关键:找到最小的那个数.并用 ...

  8. Java数据结构和算法总结-冒泡排序、选择排序、插入排序算法分析

    前言:排序在算法中的地位自然不必多说,在许多工作中都用到了排序,就像学生成绩统计名次.商城商品销量排名.新闻的搜索热度排名等等.也正因为排序的应用范围如此之广,引起了许多人深入研究它的兴趣,直至今天, ...

  9. 基于Java实现的选择排序算法

    选择排序和冒泡排序同样是基础排序算法,现在也做个学习积累. 简述 选择排序算法较为稳定,基本上都是O(n2)的时间复杂度,规模越小排序越快,不需要占用额外空间.其实选择排序原理很简单,就是在未排序序列 ...

随机推荐

  1. 利用mysqlbinlog_flashback闪回丢失数据

            today,i'll have a test with the open source tool mysqlbinlog_flashback which is released by ...

  2. Linux 学习第四天

    Linux学习第四天 一.常用命令 1.tar  (压缩.解压) A.添加压缩包  tar czvf 压缩包名称.tar.gz 源文件 B.添加压缩包  tar cjvf 压缩包名称.tar.bz2 ...

  3. Jquery中菜单的展开和折叠

    jquery内容 <script> $(function () { $("dl dt").click(function () { $(this).siblings(). ...

  4. Eclipse易卡死

    在用eclipse编辑项目的时候,经常卡死,经过查询知道原来是我的JDK和eclipse版本对应的不好,我们都知道,eclipse的环境需要配置. 当时情况是这样的 2.容易出现卡死或者如图所示的情况 ...

  5. HTML 5 audio标签

    audio标签的介绍 定义: <audio> 标签定义声音,比如音乐或其他音频流. <audio></audio>是HTML5中的新标签 能够在浏览器中播放音频, ...

  6. 关于windows下安装mysql数据库出现中文乱码的问题

    首先需要在自己安装的mysql路径下新建一个my.ini文件,如下: 然后在my.ini文件中输入一下内容,主要控制编码问题的为红框部分,如下: 为了方便大家使用,可以复制以下代码: [WinMySQ ...

  7. day 18 类与类之间的关系

    类与类之间的关系     在我们的世界中事物和事物之间总会有一些联系.    在面向对象中,类和类之间也可以产生相关的关系 1.依赖关系     执行某个动作的时候. 需要xxx来帮助你完成这个操作, ...

  8. Python(ATM机low版)

    import osclass ATM: @staticmethod def regst(): while 1: nm = input('请输入你的名字:') mm = input('请输入你的密码:' ...

  9. gem install ruby-odbc失败

    解决: brew install unixodbc gem install ruby-odbc -v '0.99998'

  10. A1050

    输入两个字符串,将第一个字符串中包含的第二个字符串的字符去掉(包括空格),然后输出. gets()不能用了,我混搭了string和length(),不用纠结长度还是很好的. 第二个字符串所在HashT ...