选择排序--java进阶day06
1.选择排序
https://kdocs.cn/l/ciMkwngvaWfz?linkname=150996881

了解了选择排序之后,我们来找其中的规律
2.规律
选择排序就是一个元素和数组后续元素依次进行比较,那么我们先观察主动去比较的那个元素
发现,该元素的索引在不断地加1,想要达成这种效果我们直接遍历数组,i就是这样变化的

不过上图中,i多出了一个4,我们让循环条件减1即可

后续的元素我们就要再遍历一次数组来获取

接下来再看这些剩余数据的索引

重点看第一列
当i是0时,j就为1,i是1时,j就为2,i是3时,j就为4

很明显,j是i+1
所以,这些元素的比较实际上就是arr[i]和arr[j]的比较

.
实际代码

选择排序--java进阶day06的更多相关文章
- 基本排序算法——选择排序java实现
选择排序与冒泡排序有很大的相同点,都是一次遍历结束后能确定一个元素的最终位置,其主要思路是,一次遍历选取最小的元素与第一个元素交换,从而使得一个个元素有序,而后选择第二小的元素与第二个元素交换,知道, ...
- 选择排序-java
排序-选择排序 基本思想:在待排序子表中找出最大(小)元素, 并将该元素放在子表的最前(后)面. 平均时间:O(n2) 最好情况:O(n2) 最坏情况:O(n2) 辅助空间:O(1) 稳定性:不稳定 ...
- 直接选择排序----java实现
直接选择排序思路: 从待排序数据中选择第一个假定为最小的下标,然后他后面的与他循环比较,得到真的最小值下标,然后最小值前的那一区段依次后移,并把最小值赋值给第一个元素.第二次时,假定第二个为最小,然后 ...
- 选择排序Java版
package dataStructureAlgorithmReview.day01; import java.util.Arrays; /** * * @author shundong * */ p ...
- 选择排序java代码
/** * 选择排序 * * 原理:将最小值与数组第1个即array[0]交换,第二次则忽略array[0],直接从array[1]至array[array.length-1]中 * 选择出最小值与a ...
- 选择排序java
先简述选择排序,然后上代码 进行选择排序就是将所有的元素扫描一遍,从中挑选(或者说是选择,这正是这个排序名字的由来)最小的一个元素,将这个最小的元素与最左边的元素交换位置 ,现在最左边的元素就是有序的 ...
- 冒泡排序与简单选择排序——Java实现
1.冒泡排序 1)原理说明:反复遍历要排序的数列,一次比較两个元素,假设他们的顺序错误就把他们交换过来.走訪数列的工作是反复地进行直到没有再须要交换,也就是说该数列已经排序完毕. 2)代码实现: pa ...
- 冒泡排序和选择排序-java
冒泡排序 假设有一数组int [] arr = {9,5,4,10,2};原理是第一个元素和第二个比较,如果前者大于后者便交换位置,然后第二个元素和第三个元素比较,如果前者大于后者便交换位置.以此类 ...
- 排序算法入门之选择排序-Java实现
本文参考http://blog.csdn.net/m0_37568091/article/details/78023705 选择排序是先从对象数组中选出最小的放在第一个位置,再从剩下的元素中选择次小的 ...
- 选择排序java实现
package text.algorithm; /** * 选择排序 * O(n^2);空间复杂度O(1); */public class SelectionSort { public static ...
随机推荐
- 【Go】彩云小译翻译接口js逆向解密返回值
一.前言 对彩云小译网页版进行抓包分析,将js算法代码转换成go代码,使用go发送http请求编写一个翻译小工具. 主要实现: 翻译(解密翻译结果) 单词字典查询 生成JWT(保持有效期) 二.抓包 ...
- RabbitMQ-限流
1.简介 为什么要对消费端进行限流? 其实很好理解,比如我们常能接触到的消费场景:春运期间12306火车票的抢购,双11期间的下单等.这些场景都有一个共同点就是都会导致短暂时间内请求数激增,如果我们的 ...
- 《计算机体系结构与SoC设计》(二)
1. 多指令流单数据流 多指令流单数据流(Multiple Instruction Stream, Single Data Stream,简称 MISD)是一种处理器设计概念,它允许处理器在单个时钟周 ...
- 第三章 消息摘要算法--MD5--SHA--MAC
6.1.MD5 推荐使用CC(即Commons Codec)实现 虽然已被破解,但是仍旧广泛用于注册登录模块与验证下载的文件的完整性 可以自己写一个注册登录模块:自己下载一个MD5加密的文件,然后通过 ...
- MacBook配置
如何在Mac上安装Java JDK及配置环境变量 1. 访问Java JDK 网站下载与安装(以JDK8为例) 点击下载链接:https://www.oracle.com/java/technolog ...
- 无网环境Docker Rpm离线安装
总体思路:找一台可以联网的linux,下载docker的RPM依赖包而不进行安装(yum localinstall),将所有依赖的rpm环境打包好,再在无网环境中解压逐一安装(rpm: --force ...
- DAB实现中用到的主要设计模式
DAB C++ 版本设计模式应用实践 1. 命令模式 (Command Pattern) 设计目标 模块解耦:实现各模块独立编译.测试.运行,消除模块间直接依赖 扩展准备:为桥接模式实现奠定基础 依赖 ...
- Jenkins+Ant+JaCoCo的代码覆盖率集成实践
Jenkins+Ant+JaCoCo的代码覆盖率集成实践 一.工具介绍 Jenkins: Jenkins是一个开源的.基于Java开发的持续集成工具,它可以帮助开发人员自动化构建.测试和部署软件项目. ...
- FLink自定义Sink,生产的数据导出到Redis
一.pom文件 https://www.cnblogs.com/robots2/p/16048648.html 二.自定义sink 2.1 自定义sink package net.xdclass.cl ...
- DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
你好呀,我是歪歪. 五年前,2020 年,我写文章的时候曾经遇到过一个技术问题,百思不得其解,当时把那个问题归类为玄学问题. 后来也会偶尔想起这个问题,但是我早就不纠结于这个问题了,没再去研究过. 前 ...