技术标签: 算法
选择排序改进了冒泡排序,将必要的交换次数从O(N^2)减少到O(N)。不幸的是比较次数仍然保持为O(N^2)。然而,选择排序仍然为大记录量的排序提出了一个非常重要的改进,因为这些大量的记录需要在内存中移动,这就使交换的时间和比较的时间相比起来,交换时间更为重要。(一般来说,在Java语言中不是这种情况,Java中只是改变了引用位置,而实际对象的位置并没有发生改变。)
用选择排序算法对棒球队员排序
让我们再来考虑棒球队排队问题。在选择排序中,不再只比较两个相邻的球员。因此,需要记录下某一个指定队员的高度;可以使用笔记本写下指定队员的身高,同时还需要准备好一条紫红色的毛巾。
简述
进行选择排序就是把所有的队员扫描一趟,从中挑出(或者选择,这正是这个排序名字的由来)最矮的一个队员。最矮的这个队员和站在队列最左端的队员交换位置,即站到0号位置。现在最左端的队员是有序得了,不需要再交换位置了。注意,在这个算法中有序的队员都排列在队列的左边(较小的下标值),而在冒泡排序中则是排列在队列右边的。
再次扫描球队队列时,就是从1号位置开始,还是寻找最矮的,然后和1号位置的队员交换。这个过程一直持续到所有队员都排定。
代码如下
SelectSort.java
package simpleSort;
/**
* 选择排序
* @author huyi
*/
public class SelectSort extends Sort{
public SelectSort(int size){
this.arr = new int[size];
this.size =size;
}
public SelectSort(int[] arr){
this.arr = arr;
this.size = arr.length;
}
@Override
public void sort() {
for (int i=0; i<size-1;i++){
int minIndex = i;
for (int j=i; j<size-1; j++){
if (arr[minIndex] > arr[j+1]){
minIndex = j+1;
}
}
if (minIndex != i){//找到了 i位置后面的 最小值,交换位置
arr[i] = arr[i]^arr[minIndex];
arr[minIndex] = arr[i]^arr[minIndex];
arr[i] = arr[i]^arr[minIndex];
}
}
}
}
Main.java 程序入口
import simpleSort.SelectSort;
public class Main {
public static void main(String[] args) {
int[] arr= {5,4,2,3,1};
SelectSort selectSort = new SelectSort(arr);
selectSort.display();
selectSort.sort();
selectSort.display();
}
}
运行结果:
文章浏览阅读489次。ImportError: No module named***先pip install ***再从 d:\python\lib\site-packages中找到***包将***包复制到D:\ANACONDA\Lib\site-packages下,重启notebook完成!!!
文章浏览阅读92次。编写一个程序,交换指定字典的key和value。 例如:dict1={'a':1, 'b':2, 'c':3} --> dict1={1:'a', 2:'b', 3:'c'} # 1dict1 = {'a': 1, 'b': 2, 'c': 3}dict2 = {}for key, value in dict1.items(): dict2[value] = keyprint(dict2)# 2 字典推导式dict1 = {'a': 1, 'b': 2, 'c'.._写程序实现replace函数的功能,将指定字符串中指定的旧字符串转换成指定的新字符串
文章浏览阅读1.1k次。https://blog.csdn.net/u014689794/article/details/79969352
文章浏览阅读756次。[javac] Compiling 1 source file to E:\mf\saas_20190906\build\dist\saasapi\WEB-INF\classes [javac] javac: 无效的目标发行版: 1.8 [javac] 用法: javac <options> <source files> [javac] -..._compiling 1 source file with javac [debug release 17] to target\classes
文章浏览阅读6.2k次。营业税求助编辑百科名片 营业税系统营业税(Business tax),是对在我国境内提供应税劳务、转让无形资产或销售不动产的单位和个人,就其所取得的营业额征收的一种税。营业税属于流转税制中的一个主要税种。2011年11月17日,财政部、国家税务总局正式公布营业税改征增值税试点方案。目录
文章浏览阅读366次。SVM基本思想寻找超平面实现最大间隔SVM的形式化描述[熟悉书本]支持向量:距离超平面最近的样本点间隔:两个异类支持向量到超平面的距离和对偶问题[熟悉书本表达式]SVM特点:最终的模型仅与支持向量相关.SMO求解对偶问题:每次优化两个参数,提高效率核函数用途用高维空间使样本线性可分在原始空间内计算样本在高维特征空间的内积重要性:核函数定义了一个高维空间核函数的选择影响了SVM的性能软间隔原因.._svm期末大题
文章浏览阅读420次。2410上NAND的初始化及驱动流程一 NAND设备及资源的定义和注册我们通过MACHINE_START定义了smdk2410的machine_desc对象,这个对象里面有个init_machine的函数指针, 这里指向smdk_machine_init(), 我们的NAND设备就是在这个函数里注册到系统的.void __init smdk_machine_init(void){
文章浏览阅读94次。隔月分组查询:create table t3 (c1 varchar(22),c2 number(10,2));insert into t3 values ('2012-02-01',100.55);insert into t3 values ('2012-03-11',200);insert into t3 values ('2012-03-21',333);insert into t3 val..._oracle 语句跨月
文章浏览阅读3.4w次,点赞103次,收藏391次。(血战一下午,终于把NEO4J安装好了,很多教程还是非常友好的,但对于像我这样的小白,只想说各位大佬真的好强,而我差一步都不得行。)参考:(逻辑严谨,作图精美,良心大佬)特此来分享一下,为大家排排坑。_neo4j安装
文章浏览阅读3.8k次。一、 I2C协议简介1、何为I2C协议I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。2、软件I2C与硬件I2C所谓硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的;软件I2C一般是用GPIO管脚,用软件控制管脚状态以模拟I2C通信波形。硬件I2C的效率要远高于_基于51单片机开发aht20
文章浏览阅读2.1k次。认证策略实际上是AuthenticationStrategy这个接口,它有三个实现:• AuthenticationStrategy 接口的默认实现:• FirstSuccessfulStrategy:只要有一个 Realm 验证成功即可,只返回第 一个 Realm 身份验证成功的认证信息,其他的忽略;• AtLeastOneSuccessfulStrategy:只要有一个Realm验..._realmsecuritymanager
文章浏览阅读2.2k次。SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。使用了Spring框架后已经简化了我们的开发。而SpringBoot又是对Spring开发进行简化的,可想而知SpringBoot使用的简单及广泛性。既然SpringBoot是用来简化Spring开发的,那我们就先回顾一下,以SpringMVC创建工程,并在pom.xml配置文件中配置所依赖的坐标编写web3.0的配置类作为web程序,web3.0。_springboot