网站首页 > java教程 正文
简介
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。
逻辑梳理
我们将8, 6, 2, 3, 1, 5, 7, 4这组数作为例子,通过选择排序将这组数由小到大进行排序
1.先找到这组数中的最小值,然后将最小值与第一个位置进行交换,得到的结果为【1, 6, 2, 3, 8, 5, 7, 4】
2.从第二个数开始找到最小值与第二个数进行交换得到的结果为【1, 2, 6, 3, 8, 5, 7, 4】
3.从第三个数开始找到最小值与第三个数进行交换得到的结果为【1, 2, 3, 6, 8, 5, 7, 4】
4.从第四个数开始找到最小值与第四个数进行交换得到的结果为【1, 2, 3, 4, 8, 5, 7, 6】
5.从第五个数开始找到最小值与第五个数进行交换得到的结果为【1, 2, 3, 4, 5, 8, 7, 6】
6.从第六个数开始找到最小值与第六个数进行交换得到的结果为【1, 2, 3, 4, 5, 6, 7, 8】
7.从第七个数开始找到最小值与第七个数进行交换得到的结果为【1, 2, 3, 4, 5, 6, 7, 8】
8.剩下一个数就是最大值,不需要再次查找
代码实现
package com.zyp.sort;
import java.util.Arrays;
/**
* 选择排序
* @author zyp
* @create 2022/1/21
*/
public class SelectSort {
public static void main(String[] args){
//待排序的数组
int[] array = new int[]{8,6,2,3,1,5,7,4};
//需要array.length-1才能将数据排好序
for(int i = 0;i<array.length-1;i++){
//假设最小值的下标为i
int minIndex = i;
int min = array[i];
for(int j = i+1;j<array.length;j++){
if(min > array[j]){
minIndex = j;
min = array[j];
}
}
//找到最小值,和当前的数进行替换(最小值不是当前位置的值)
if(minIndex != i){
array[minIndex] = array[i];
array[i] = min;
}
System.out.print("第"+(i+1)+"次后:"+Arrays.toString(array));
System.out.println();
}
}
}
代码结果展示:
猜你喜欢
- 2024-10-31 「Java基础」你必须知道的Java排序算法
- 2024-10-31 Java排序算法实现方式(算法思路 过程动图)
- 2024-10-31 一文读懂Java排序算法(所有的排序算法比较)
- 2024-10-31 java数据结构与算法之快速排序(用java实现快速排序算法)
- 2024-10-31 开发人员是如何使用Java进行排序?
- 2024-10-31 算法:什么是外部排序(外部排序有哪几种)
- 2024-10-31 Java 常见的排序算法,一次跟你说明白 ~ 直接插入排序
- 2024-10-31 Java排序算法-Java入门|Java基础课程
- 2024-10-31 必看java八大排序算法(java十大排序算法)
- 2024-10-31 冒泡排序、插入排序、选择排序、希尔排序
你 发表评论:
欢迎- 07-15采用Oracle OSB总线进行服务注册和接入
- 07-15javaEE 新闻管理系统 oracle11+tomcat6
- 07-15从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 07-15如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 07-15【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 07-15【mykit-data】 数据库同步工具(数据库表同步工具)
- 07-15[Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- 07-15Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- 最近发表
-
- 采用Oracle OSB总线进行服务注册和接入
- javaEE 新闻管理系统 oracle11+tomcat6
- 从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 【mykit-data】 数据库同步工具(数据库表同步工具)
- [Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- Oracle数据库云服务系列新增前所未有的企业级功能
- 直播预告丨如何实现Oracle存储过程到java的一键转化
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)