1.算法思想:

首先找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素,那么它就和自己交换。如果只剩下最后一个元素,就没必要排了,它就是最大的)。再次在剩下的元素中找最小的元素,将它与数组中的第二个元素交换。如此往复,直到将整个数组排序。

为什么叫它选择排序?因为从上面的算法中可以看到它一直不断地在选择剩余元素中的最小值。

2.Java代码实现:

public static void selectSort(int[] arr) {if (null == arr || arr.length < 2)      //数组是空或者数组里面只有一个元素,没必要排序return;for (int i = 0; i < arr.length - 1; i++) {  //最后一个元素没必要再给它排序,因为它就是最大的int minIndex = i;                       //初始的时候就认为最小值索引指针在i位置,最小值就是arr[i]for (int j = i + 1; j < arr.length; j++) {  //在I后面[i+1,arr.length-1]区间找最小的值minIndex = arr[j] < arr[minIndex] ? j : minIndex;//找到就把最小值索引跟新,找不到最小值索引还在原位}int temp = arr[i];          //将i位置上的元素值和最小索引位置的元素值交换arr[i] = arr[minIndex];arr[minIndex] = temp;}}

3.复杂度分析:

时间复杂度是O(N^2),因为是0+1+2+......+N-1次比较,以及N-1次交换元素位置。

使用Java代码实现选择排序Java相关推荐

  1. 用Java玩转选择排序

    选择排序 算法原理 代码实现 选择排序总结: 选择排序 选择排序(Selection sort)是一种简单直观的排序算法.选择排序之所以叫选择排序就是在一次遍历过程中找到最小元素的角标位置,然后把它放 ...

  2. Java List排序 java ListMap 排序 Java listmap 模拟 oracle 排序 Java listmap 模拟 mysql 排序

    Java List排序 java ListMap 排序 Java listmap 模拟 oracle 排序 Java listmap 模拟 mysql 排序 一.概述 近期的开发工作中,遇到一个需求: ...

  3. 【Java 代码实例 13】Java操作pdf的工具类itext

    目录 一.什么是iText? 二.引入jar 1.项目要使用iText,必须引入jar包 2.输出中文,还要引入下面```itext-asian.jar```包 3.设置pdf文件密码,还要引入下面` ...

  4. 选择排序java从小到大代码_java中选择排序与归并排序的内容,详细解析

    上次我们已经为大家介绍过java中插入.分治和快速排序的内容,今天再来为大家介绍一下java中选择排序与归并排序的具体内容,并且通过实际的代码为大家解析. 首先我们需要了解的是,选择排序也是一种简单直 ...

  5. 选择排序java代码_JAVA简单选择排序算法原理及实现

    简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: ...

  6. 快速排序java代码_8 种排序算法与 Java 代码实现!

    1.直接插入排序 经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中. 将第一个数和第二个数排序,然后构成一个有序序列 将第三个数插入进去,构成一个新的有序序列. 对第四个数.第五个数--直 ...

  7. java数据结构之选择排序

    作为java排序算法中的一种经典的排序算法,选择排序的思想还是比较容易理解的,其主要的排序过程为: 每一趟从待排序记录中选出最小元素,顺序放在已排好序的最后,直到全部记录排序完毕.也就是:每一趟在n+ ...

  8. Java基础语法——选择排序、冒泡排序以及二分查找法和Arrays类的使用

    本文将带你了解选择排序.冒泡排序以及二分查找法的原理和代码实现,以及通过Arrays类快速实现对数组的一些操作 文章目录 一.选择排序 二.冒泡排序 三.二分查找法 四.Arrays类(对数组的操作) ...

  9. (讲解)用java实现简单选择排序

    基本操作: 选择排序(select sorting)也是一种简单的排序方法. 它的基本思想是:第一次从arr[0到]arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[1]到arr[n- ...

最新文章

  1. 高级(复杂)指针的含义
  2. 电气实现:蒙特卡洛法 模拟多台电动汽车有序充放电负荷和(python实现)
  3. Oracle数据库之事务
  4. kafka 消息服务
  5. ios逆向小试牛刀之操作手记
  6. 肺癌图片识别的相关信息
  7. 【Leetcode | 03】String
  8. Windows安装mysql8.0
  9. c语言队列作用,队列(C语言)
  10. 计算机网络(第四章网络层)
  11. MySQL按字符串hash分区_MySQL学习笔记(14):分区
  12. android wakelock权限,android - 当我使用PowerManager.WakeLock与AlaramManager android时的权限异常 - 堆栈内存溢出...
  13. ISO 37301:2021《合规管理体系 要求及使用指南》国际标准解读及相关标准
  14. PropertyUtils
  15. 如何安装 btsync
  16. 今晚7:30 | 连界、将门、百度、碧桂园创投四位大佬眼中的AI世界,是继续高深还是回归商业本质?...
  17. ipqc异常处理流程图_品质异常该怎么处理?照这个流程走!
  18. [CVPR 2020] RPM-Net: Robust Point Matching using Learned Features
  19. Linux-hexdump命令调试event驱动—详解(13)
  20. From Shadow Generation to Shadow Removal (CVPR2021)阅读笔记

热门文章

  1. 计算机组成原理:定点数和浮点数、校验码
  2. FreeRTOS实现就绪列表
  3. Java项目:在线网盘系统(java+JSP+Springboot+maven+mysql+ThymeLeaf+FTP)
  4. 023.抓到“拔粪青年”
  5. JS学习笔记——入门基础知识总结
  6. canvas实现锥形渐变
  7. gp工具命令之gpstop
  8. 计算机网络教程第五版|微课版 - 缩写词+全称+中文
  9. 支付宝WAP支付总结
  10. 全国职业院校技能大赛-网络建设与运维赛题(一)