博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法相关——Java排序算法之选择排序(六)
阅读量:4045 次
发布时间:2019-05-24

本文共 845 字,大约阅读时间需要 2 分钟。

0. 前言

本系列文章将介绍一些常用的排序算法。排序是一个非常常见的应用场景,也是开发岗位面试必问的一道面试题,有人说,如果一个企业招聘开发人员的题目中没有排序算法题,那说明这个企业不是一个正规的企业,哈哈,虽然有点戏谑,但是也从侧面证明了排序算法的重要性。

本文将介绍的是常见排序算法中的选择排序

选择排序

6.1  基本思想

个人感觉选择排序是最接近人类思维的一种排序方法,因为我们在看到一个待排序列时,首先是从始至终找到一个最小的数放在第一个位置,再从剩下的数据中选出最小的放在第二个位置。选择排序的基本思想也是如此的。

6.2  代码实现

/**@author Calvin*@blog http://blog.csdn.net/seu_calvin/article/details/58282114*@data 2017/02/27*/public class Order {	private int[] array; 	public Order(int[] array){		this.array = array;	}	    public void sort() {       if(array!=null && array.length>0){    	    //肯定是length-1趟    	   	for(int i = 0; i
输出结果略。

6.3  性能特点

选择排序很明显空间复杂度为O(1),时间复杂度为O(n*n),选择排序是不稳定的。比如初始序列为{3,3,1},那么排序的结果两个3的相对位置会明显被改变。

选择排序不是像冒泡排序一样一点一点地移动,而是直接进行交换,所以一般来看,选择排序要比冒泡排序性能好一点。但是性能方面,还是可以找到优化的点,第一是在找最小值与第一个元素交换的过程中,可以顺便找出最大值并与最后一个元素交换,这样外层循环时间会缩短一半,性能也相应地得到了优化。第二是如何更快的找到待排序列中的最小值,这个就不再展开了。

你可能感兴趣的文章
Flume 怎样实现数据的断点续传?
查看>>
Flume 如何自定义 Mysql Source?
查看>>
Flume 如何自定义 Mysql Sink?
查看>>
Flume 的可靠性级别有哪些?
查看>>
Sqoop 是什么?Sqoop 有什么特点?
查看>>
Sqoop 的使用场景分析
查看>>
DAGScheduler 是什么?有什么作用?
查看>>
DAGScheduler 是如何划分 Stage 的?
查看>>
TaskScheduler 是什么?有什么作用?
查看>>
一篇文章搞懂 DAGScheduler 的调度流程
查看>>
SparkEnv 是什么?有什么作用?
查看>>
SparkConf 是什么?有什么作用?
查看>>
SecurityManager 是什么?有什么作用?
查看>>
如何理解 Java 的线程中断机制?
查看>>
线程的挂起(suspend)和继续执行(resume)是什么情况?
查看>>
线程的等待线程结束(join)和谦让(yield)是什么情况?
查看>>
finalize 真的一点用没有吗?
查看>>
关于HDU 1713 相遇周期
查看>>
BF算法
查看>>
poj 1068 Parencodings 大模拟 水题 暑假第7题
查看>>