当前位置: 首页 > news >正文

JAVA:选择排序算法及其编写

选择排序算法是一种比较经典的排序算法,与其类似的冒泡排序算法的思想有点不同,它采用的是选择第一个和后n-1个进行比较,将最小的排在第一个位置,后面的依此方式进行。

一、算法步骤

步骤1:初始化数组arry(假设其长度为n);

步骤2:选择数组的第一元素与后n-1个元素进行比较,挑选最小的元素a1与第一个元素进行替换,将第一位置的元素换成a1,最小元素对应位置换成第一个元素;

步骤3:选择第2个位置的元素与后n-2个元素进行比较,选择最小的元素a2与其进行替换,依此规则选择第n-1个位置的元素与其最后一个元素进行比较;

步骤4:完成步骤3的选择,输出排序后的结果;

二、案例讲解(实例理解)

给出一数组[3,2,1,9,4,6,5],按上述算法步骤进行:

第一次比较:1,2,3,9,4,6,5

第二次比较:1,2,3,9,4,6,5

第三次比较:1,2,3,9,4,6,5

第四次比较:1,2,3,49,6,5

第五次比较:1,2,3,4,5,6,9

第六次比较:1,2,3,4,5,69

通过上述的案列,可以很清晰的得出排序后的数组,下面通过程序的方式进行展示:

三、程序实现

package algorithm;import java.util.Arrays;public class SelectSort {public static void main(String[] args) {//创建数组int [] array=  {3,2,1,9,4,6,5};for(int i=0;i<array.length-1;i++) {int min_index=i;for(int j=i+1;j<array.length;j++) {if(array[j]<array[min_index]) {min_index=j;}}int temp=array[i];array[i]=array[min_index];array[min_index]=temp;System.out.println("第"+(i+1)+"次排序结果:"+Arrays.toString(array));}}
}

在程序中需要注意的点是大家需要导入包Arrays,使用其中的toString方法将其转化才能打印出结果。

四、输出结果:

第1次排序结果:[1, 2, 3, 9, 4, 6, 5]
第2次排序结果:[1, 2, 3, 9, 4, 6, 5]
第3次排序结果:[1, 2, 3, 9, 4, 6, 5]
第4次排序结果:[1, 2, 3, 4, 9, 6, 5]
第5次排序结果:[1, 2, 3, 4, 5, 6, 9]
第6次排序结果:[1, 2, 3, 4, 5, 6, 9]

http://www.lryc.cn/news/13499.html

相关文章:

  • 【Linux】——基础开发工具和vim编辑器的基本使用方法
  • R语言部分题解
  • 水文监测场景的数据通信规约解析和落地实践
  • 【数据结构】时间复杂度和空间复杂度
  • 从发现SQL注入到ssh连接
  • SAP ABAP
  • C/C++每日一练(20230219)
  • 【NestJS】模块
  • 隐私计算头条周刊(2.13-2.19)
  • 【STM32笔记】低功耗模式配置及避坑汇总
  • DFN: Dynamic Filter Networks-动态卷积网络
  • 面试官:你是怎样理解Fiber的
  • 【C++的OpenCV】第一课-opencv的介绍和安装(Linux环境下)
  • k8s安装tekton,编写task
  • K_A12_014 基于STM32等单片机驱动S12SD紫外线传感器模块 串口与OLED0.96双显示
  • 还真不错,今天 Chatgpt 教会我如何开发一款小工具开发(Python 代码实现)
  • Boom 3D最新版本下载电脑音频增强应用工具
  • redis-如何保证数据库和缓存双写一致性?
  • 系列二、核心概念运行流程
  • 恢复 iPhone 和 iPad 数据的 10 种简单工具
  • 经理与员工工资关系-课后程序(JAVA基础案例教程-黑马程序员编著-第四章-课后作业)
  • Micropython ESP32配置与烧录版本
  • java面试题-并发关键字(Synchronized,volatile,final)
  • 【笔试强训】Day_02
  • DepGraph:适用任何结构的剪枝
  • 【结构体版】通讯录
  • Debezium系列之:基于debezium采集数据到kafka,再从kafka将数据流式传输到下游数据库
  • 【2023】华为OD机试真题Java-题目0217-上班之路
  • 基于spring生态的基础后端开发及渗透测试流程(二)
  • Python语言零基础入门教程(二十六)