java排序之选择排序
选择排序改进了冒泡排序,所改进的是排序时交换的次数,并没有改进比较的次数。在大批量数据排序的时候,选择排序中对于交换数据的时间和比较的时间来说,很显然,数据交换和移动的时间更为重要(一般来说,Java中不是这种情况,Java中只是改变了引用的位置,而实际对象的位置并未发生改变)
用选择排序对篮球队员进行排序:
进行选择排序就是把所有的队员扫描一遍,找到其中最低的队员,让他与最左边的队员(0号位置)进行交换(如果最左边的队员就是最低的,那么不进行交换)。这样最左边的队员就是有序的状态,不需要再次交换位置了。注意,这个算法中呢,有序的都排列在队伍的最左边,与冒泡排序相反(冒泡排序是从最右边)。再次扫描队列时,就是从1号位置开始,也是找到最矮的,与队列的1号位置进行交换,那么依次下去,一直持续到整个顺序排列完成。
第一次扫描:
第二次扫描:
第三次扫描:
依次如图所示。
接下来上代码:
public class selectSort {
private long[] a;
private int nElems ;
public selectSort(int max) {
a = new long[max];
nElems = 0;
}
public void insert(long value) {
a[nElems] = value;
nElems++;
}
public void display() {
for (int i = 0; i < nElems-1; i++) {
System.out.println(a[i]+"");
}
System.out.println("");
}
public void swap(int one , int two) {
long temp = a[one];
a[one] = a[two];
a[two] = temp;
}
public void selectSortApp() {
int min ,in ,out ;
for ( out = 0; out < nElems-1; out++) {
min = out ;
for ( in = out+1; in < nElems; in++) {
if(a[in]<a[min]){
min = in;
}
}
swap(out, min);
}
}
}
out:用来记录外层循环,从数组开头0开始,依次增长。
in:用来记录内层循环,找到每一轮的最矮队员,并将他与这一轮起始的队员进行交换。
min:用来记录当前最矮的队员。
选择排序的效率:选择排序与冒泡排序进行了同样次数的比较,N*(N-1)/2,但是一列数组如果有10个数据项,只需要少于10次的比较就可以了。如果数据量N约大,那么选择排序就会比冒泡排序节省很多时间(在数据交换位置上节省),数据量很小的情况下,两者相当。
java排序之选择排序相关推荐
- 【02】Java进阶:09-冒泡排序、选择排序、二分查找、异常、异常的产生和处理、自定义异常、多线程
day09[排序算法.异常.多线程基础] 今日内容 冒泡排序 选择排序 二分查找 异常处理 多线程基础 教学目标 能够理解冒泡排序的执行原理 能够理解选择排序的执行原理 能够理解二分查找的执行原理 能 ...
- Java排序算法——选择排序
Java排序算法--选择排序(Selection sort) 传送门 冒泡排序 插入排序 简述 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找 ...
- 排序算法--选择排序(Java实现)
选择排序概念 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中 ...
- 排序算法---选择排序(java版)
简单选择排序 原理 选择排序(Selection Sort)的原理有点类似插入排序,也分已排序区间和未排序区间.但是选择排序每次会从排序区间中找到最小的元素,将其放到已排序区间的末尾. 简单选择排序执 ...
- 数据结构/排序/选择排序/简单选择排序
原理 介绍: 原理:每趟排序记录最小记录的索引后交换 类比:猴子搬苞谷,喜欢更大的苞谷.猴子经过1排苞谷,每经过1个苞谷就与心中的苞谷对比,更大就记录当前苞谷的位置,走完这一排苞谷,心中的那个苞谷就是 ...
- 排序算法(分类,时间复杂度)(快速排序,插入排序,希尔排序,选择排序,冒泡排序)
1.排序算法 1.排序的分类 分为内部排序和外部排序,其中内部排序分为插入排序.选择排序.交换排序.归并排序和基数排序.插入排序包括直接插入排序和希尔排序:选择排序包括简单选择排序和堆排序:交换排序包 ...
- C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】
目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...
- 排序算法——选择排序法(Select Sorting)
选择排序(Select Sorting) 基本介绍 选择排序也属于内部排序法,是从预排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的 选择排序思想 选择排序(Selec ...
- 选择排序—简单选择排序(Simple Selection Sort)
基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素 ...
- C语言基础排序算法-选择排序
C语言基础排序算法-选择排序 什么是选择排序? 选择排序(Selection sort)是一种简单直观的排序算法,第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从 ...
最新文章
- React Native 环境搭建步骤
- VCS-bilibili教程篇1-Simulation Basics
- java高级工程师开放面试题集一
- RHEL/Fedora/CentOs的系统服务优化
- C++新旧类型转换小记
- CSS绘制放大缩小关闭按钮
- ORACLE IMP-00017: following statement failed with ORACLE error 6550
- 前端学习(576):margin无效情形之内联特性导致无效
- php抽象类的构造函数,抽象类的构造函数
- 一个很好的开源图像处理软件--imageJ (2
- 20135231 —— Linux 基础入门学习
- vue 百度地图 3d地图
- esp8266_deauther第四篇
- Java程序实现繁体字转换简体字
- Android Q版本读取SDcard
- Android压缩图片和libjpeg库
- GO111MODULE作用
- python三级考什么_什么是计算机三级考试?计算机三级考什么?
- Pycharm Professional(专业版)完美破解,永久激活
- python格式化输出xml_将Scrapy的输出格式化为XML