java算法(一) 直接选择排序
一、基本概念
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置(注:要把最大最小的元素和起始的元素交换),
然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

二、算法特点
是否稳定: false
平均时间复杂度:O(n^2)
最差时间复杂度:O(n^2)
最优时间复杂度:O(n^2)

package com.jiafuwei.java; /**
* java 选择排序
* @author jfw
*
*/
public class SelectionSort {
public static void main(String[] args) {
int [] collections = {36,23,56,789,342,456,34,7,234,4578,32};
SelectionSort selectionSort = new SelectionSort();
selectionSort.sort(collections);
for (int i = 0; i < collections.length; i++) {
System.out.print(collections[i]+" ");
}
} public void sort(int [] data) {
for(int k=0;k<data.length;k++){
int min = k;
//先把这一圈循环中的第一个数和后面的数进行比较 如果大于后面的数 然后把后面数的下标值记录下来
//注意 这里i=k 是从k后面开始循环
for(int i=k;i<data.length;i++){
if(data[min]>data[i]){
min = i;
}
}
//把这一圈循环中的一个数记录下来
int temp = data[k];
//把这一圈循环中的一个数变成最小的数
data[k] = data[min];
//把以前最小数的位置 改变为当时的第一个数
data[min] = temp;
}
}
}
java算法(一) 直接选择排序的更多相关文章
- Java常见排序算法之直接选择排序
		在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ... 
- Java排序算法之直接选择排序
		Java排序算法之直接选择排序 基本过程:假设一序列为R[0]~R[n-1],第一次用R[0]和R[1]~R[n-1]相比较,若小于R[0],则交换至R[0]位置上.第二次从R[1]~R[n-1]中选 ... 
- Java版冒泡排序和选择排序
		一.理解说明 1.理解和记忆 冒泡排序:依次定位数组元素,每次只和相邻的且符合条件的元素交换位置. 选择排序:依次在数组的每个位置,通过逐个对比选择出最大或最小的元素. 2.知识点说明 (1)数组是引 ... 
- 冒泡排序算法和简单选择排序算法的js实现
		之前已经介绍过冒泡排序算法和简单选择排序算法和原理,现在有Js实现. 冒泡排序算法 let dat=[5, 8, 10, 3, 2, 18, 17, 9]; function bubbleSort(d ... 
- IOS算法(二)之选择排序
		选择排序: 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后.直到所有待排序的数据元素排完. 选择排序是不稳定的排序方法. 一. 算法描写叙述 选择排序:比方在一 ... 
- 排序算法系列:选择排序算法JAVA版(靠谱、清晰、真实、可用、不罗嗦版)
		在网上搜索算法的博客,发现一个比较悲剧的现象非常普遍: 原理讲不清,混乱 啰嗦 图和文对不上 不可用,甚至代码还出错 我总结一个清晰不罗嗦版: 原理: 从数组头元素索引i开始,寻找后面最小的值(比i位 ... 
- 【排序算法】直接选择排序算法 Java实现
		基本思想 直接选择排序是从无序区选一个最小的元素直接放到有序区的最后. 初始状态:无序区为a[1...n],有序区为空. 第一次排序:在无序区a[1...n]中选出最小的记录a[k],将它与有序区的第 ... 
- 排序算法入门之选择排序-Java实现
		本文参考http://blog.csdn.net/m0_37568091/article/details/78023705 选择排序是先从对象数组中选出最小的放在第一个位置,再从剩下的元素中选择次小的 ... 
- Java基础(46):选择排序的Java封装(完整可运行)
		1 package lsg.ap.select; import java.util.Random; public class SelectSort { //选择排序 /** *@author: 梁山广 ... 
- java:冒泡排序、选择排序、插入排序实现
		整数排序 给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法. 样例 样例 1: 输入: [3, 2, 1, 4, 5] 输出: [1, 2, 3, 4, 5] ... 
随机推荐
- ubuntu18.04.1LTS系统远程工具secureCRT
			ubuntu18.04.1LTS类windows的系统下安装远程管理工具 本地电脑之前安装的是win10,疲于win10频繁的更新和各种兼容问题,果断放弃win10系统,安装了Ubuntu 18.04 ... 
- 怎样通过互联网ssh访问家里电脑
			需求:用可以上网的公司windows电脑连接家里的manjaro linux电脑.. 环境情况:公司电脑为内网,通过登录出口服务器连接互联网.家里的电脑也为内网,通过连接无线路由器连接外网.路由器有公 ... 
- ./vi: line 2: mkdir: command not found
			当前两天博主在写脚本的时候,运行脚本时候总是出现此消息,很郁闷, 开始我以为可能是我mkdir的函数库依赖的问题,但是当我用其他的脚本创建 目录的时候,命令又可以用了,找了半天,终于找到了答案 --- ... 
- python正则表达式02--findall()和search()方法区别,group()方法
			import re st = 'asxxixxsaefxxlovexxsdwdxxyouxxde' #search()和 findall()的区别 a = re.search('xx(.*?)xxsa ... 
- 使用泛型类简化ibatis系统架构
			jdk1.5的推出为我们带来了枚举.泛型.foreach循环.同步工具包等等好东西.其中,泛型的使用为我们的代码开发提供了很大的简便,简化了我们的代码. 1.设计思路 1)GenericDao泛型类提 ... 
- 实时查询引擎 - Facebook Presto 介绍与应用
			1. Presto 是什么 Facebook presto是什么,继Facebook创建了HIVE神器后的又一以SQL语言作为接口的分布式实时查询引擎,可以对PB级的数据进行快速的交互式查询.它支 ... 
- STM32遇到的问题
			1.GPIO输出实验的时候,原来的库和现成的源代码有出入?导致实验现象不同,delay_ms,主要集中在这个函数上面 2.按键输入的时候,LED和KEY 初始化全部放在主函数,有按下按键以后,灯闪烁不 ... 
- TouTiao开源项目 分析笔记19 问答内容
			1.真实页面预览 1.1.成果预览 首先是问答列表 然后每个item设置点击事件,进入问答内容列表 然后每一个问答内容也设置点击事件,进入问答详情 1.2.触发事件. 在WendaArticleOne ... 
- 4.Mongodb数据查询2
			1.limit &skip (1)Limit 方法limit():用于读取指定数量的文档 语法: db.集合名称.find().limit(NUMBER) 参数NUMBER表示要获取文档的条数 ... 
- P3818 小A和uim之大逃离 II(洛谷月赛)
			P3818 小A和uim之大逃离 II 题目背景 话说上回……还是参见 https://www.luogu.org/problem/show?pid=1373 吧 小a和uim再次来到雨林中探险.突然 ... 
