java版选择排序和插入排序

模板匹配加速之金字塔分层搜索 图像金字塔是一种多分辨率图像表示方法,它通过一系列逐渐缩小或放大的图像来表示原始图像的不同尺度。高斯金字塔(Gaussian Pyramid):通过不断下采样(降采样)生成更小的图像。拉普拉斯金字塔(Laplacian Pyramid):通过高斯金字塔和差分操作生成一组残差图像。在模板匹配中,我们主要使用高斯金字塔来实现多尺度匹配。金字塔灰度模板匹配通过多尺度搜索策略,在保持较高准确率的同时显著提升匹配速度,尤其适用于:高分辨率图像处理实时检测系统移动端设备等资源受限场景。 阅读详情

排序算法不论在c语言,java,.net,php都很重要,冒泡排序、选择排序、插入排序是用的比较多的。个人觉得冒泡排序比较好理解,无非就是交换位置的过程,如下所示


public class BubbleSort{
     public static void main(String[] args){
         int score[] = {67, 69, 75, 87, 89, 90, 99, 100};
         for (int i = 0; i < score.length -1; i++){    //最多做n-1趟排序
             for(int j = 0 ;j < score.length - i - 1; j++){   
                 if(score[j] < score[j + 1]){    //把小的值交换到后面
                     int temp = score[j];
                     score[j] = score[j + 1];
                     score[j + 1] = temp;
                 }
             }           
             System.out.print("第" + (i + 1) + "次排序结果:");
             for(int a = 0; a < score.length; a++){
                 System.out.print(score[a] + "\t");
             }
             System.out.println("");
         }
             System.out.print("最终排序结果:");
             for(int a = 0; a < score.length; a++){
                 System.out.print(score[a] + "\t");
        }
     }
 }


但是像选择排序和插入排序理解起来会稍微困难一些,这2种排序和冒泡有很大的不同,先来看看插入排序

1.插入排序:

将n个元素的数列分为已有序和无序两个部分,如
插入排序过程示例





下所示:
{{a1},{a2,a3,a4,…,an}}
{{a1⑴,a2⑴},{a3⑴,a4⑴ …,an⑴}}
…
{{a1(n-1),a2(n-1) ,…},{an(n-1)}}
每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。



这种方式的排序主要就是为待插入的数找合适位置,之后插入变为新数组,在重复同样的操作,下面是我写的一段java代码

package org.lxh;
public class InsertSort {
    /**
     *插入排序
     */
    public static void main(String[] args) {
        int arr[]={23,6,45,8,7,24,-2};
        for(int i=1;i<arr.length;i++){
            //insertVal是准备插入的数
            int insertVal=arr[i];
            int insertIndex=i-1;
            //如果待插入的数小于前一个数,则把较大的数移动到后面
            while(insertIndex>=0&&insertVal<arr[insertIndex]){
                arr[insertIndex+1]=arr[insertIndex];
                //考虑到类似-2这样的情况,还必须往前面找合适位置
                insertIndex--;
            }
            //到这里为止我们就为要插入的数据找到了位置
            arr[insertIndex+1]=insertVal;
                                                                                            
        }
        for(int k=0;k<arr.length;k++){
                System.out.println(arr[k]);
        }
    }
}


对于这段代码可能在 insertIndex-- 这个地方理解起来很困难,这里这样写是为了考虑类似-2的这种情况,不是交换一次就可以。


2.选择排序,这种排序方式有稍微简单些,一般就是先找一个最小的数,可以假设是任意一个,再和后面的比较如果后面的小于前面的说明假设不成立,则修改假设的值,之后交换。

下面是一点资料

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。

下面是java的代码实现:

package org.lxh;
public class SelectSort {
    /**
     * 选择排序
     */
    public static void main(String[] args) {
        int arr[]={90,23,45,8,7,24};
        int temp=0;
              
        for(int i=0;i<arr.length-1;i++){
            //假设arr[i]是最小的数
            int minVal=arr[i];
            //最小的数对应的下标
            int minIndex=i;
            //从后一个数知道数组末尾验证我们前面的假设是否正确
            for(int j=i+1;j<arr.length;j++){
                //假设不成立,修改minVal和minIndex
                if(minVal>arr[j]){
                    minVal=arr[j];
                    minIndex=j;
                }
            }
            //交换
            temp=arr[i];
            arr[i]=arr[minIndex];
            arr[minIndex]=temp;
        }
        for(int k=0;k<arr.length;k++){
            System.out.println(arr[k]);
        }
    }
}




为YOLOv11引入加权双向特征金字塔(BiFPN) 本文介绍了将BiFPN应用于YOLOv11模型以提升边缘设备上小目标检测精度的实践。针对传统FPN在特征融合时的信息丢失问题,采用带可学习权重的BiFPN结构进行改造,实现了不同层级特征的动态融合。重点阐述了WeightedFeatureFusion模块的实现细节、neck结构改造方法及训练部署注意事项。实验表明,该改进使小目标AP提升3.1%,参数量仅增加5%,在精度和效率间取得良好平衡。文章还分享了权重初始化、归一化处理等实用技巧,并强调需根据数据特性评估改进效果,重新计算anchor等关键点。 阅读详情

相关推荐

【实战指南】OpenClaw 使用 Bird Skill 接入 X(Twitter)的终极省心方案:告别每次都要手动喂 Cookie 的痛苦

OpenClaw 使用 Bird Skill 接入 X(Twitter)的终极省心方案:告别每次都要手动喂 Cookie 的痛苦

hampeter的博客 1800

Java 与排序算法(3):插入排序

插入排序(Insertion Sort)是一种简单直观的排序算法,它的基本思想是将待排序序列分为已排序区间和未排序区间,然后每次从未排序区间取出一个元素,将其插入到已排序区间的合适位置中,使得插入后仍然保持已排序区间有序。重复这个过程,直到未排序区间为空,整个序列有序为止。

暗星涌动 3469

从工艺到器件:用Silvaco ATLAS仿真PIN二极管击穿电压的保姆级指南

本文详细介绍了使用Silvaco ATLAS仿真PIN二极管击穿电压的全流程指南,从工艺仿真基础搭建到器件结构构建,再到击穿特性仿真和结果分析。通过Silvaco工具链,工程师可以在设计阶段精准预测器件性能,优化击穿电压,提升研发效率。

weixin_34259816的博客 355

插入排序

插入排序 ​ 插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插入。 1. 算法步骤 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置

weixin_42615154的博客 457

在 Kubernetes 上部署 Label Studio

Label Studio 是一款开源的数据标注工具,支持多种标注任务,如文本标注、图像标注、音频标注等。

啥都会一点 667

基于PCL、Open3d、Easy3d 、VTK等常见开源库的QT开发

PCL+QT开发

阁楼 2万+

java插入排序

插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。有一群小牛, 考试成绩分别是 101, 34, 119, 1 请从小到大排。,排序过程中每次从无序表中取出第一个元素,把它的排。

papillonlong的博客 1452

ardupilot 日志分析《xKF1信息》

ardupilot 日志分析系列将会把ardupilot所有的日志文档进行分析,为我们分析无人机的运行状态,炸鸡原因,传感器状态,电机状态,控制信息,滤波信息做准备。本节主要分析xKF1日志信息,欢迎批评指正。学习好ardupilot必须会分析飞行日志,从飞行日志中我们可以学到很多无人机的知识。无人机是综合知识的体现,涵盖:导航、控制、滤波、算法、协议等各种知识,只有更全面的学习,才能在无人机的道路上越走越远。

陌城烟雨 1225

插入排序的三种算法(Java代码实现)

插入排序:1:直接插入排序 2:折半插入排序 3:希尔排序

qq_54414566的博客 7429

一个 ABAP 工具,能打印系统里某个用户对 BSP 应用的浏览历史记录

只要一个用户在 SAP ABAP 系统里浏览过 BSP 页面,会留下浏览历史记录。本工具会解析出这些记录,打印出该用户浏览的历史事件,和浏览过的页面名称。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 545

常用元器件使用方法13:物理层接口芯片DP83848的使用方法

介绍: DP83848是以太网物理层接口芯片,具有多种型号,从便于焊接角度考虑LQFP-48封装较为合适,采用LQFP-48封装的芯片,有2种型号,分别为DP83848I和DP83848C,如下图所示。 其主要区别是使用温度不同,如下图所示。 这2种芯片芯片网上均有销售,按理说DP83848C价格应该更加便宜,实际不然,DP83848I的价格低于DP83848C,考虑或与芯片的出货量...

snmplink的博客 1万+

Java版冒泡排序、插入排序、选择排序实现

冒泡排序 package com.huke.sort; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; public class BubbleSort { public static void main(String[] args) { // int arr[] =...

hukehukehukehuke的博客 231

Claude Code 错误解决方案 使用策略拒绝 Usage Policy refusal

摘要:本文分析了Claude Code API请求被拒绝的问题,当违反Usage Policy时会显示错误提示。根因包括请求内容违规、模型敏感度差异或历史消息影响。解决方案包括修改请求措辞、切换至Sonnet 4.5模型或开启新会话。文章详细追踪了错误链路,提供了核心代码分析,并给出验证方法和最佳实践建议,帮助用户避免触发API拒绝机制。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 970

插入排序,冒泡排序,选择排序(Java版)

选择排序 假设数组 int arr [] = {1, 5, 3, 6, 8, 7, 2, 3}; 如果下标为1的数比下标0的数小,则两个交换位置 很显然,结束值为数组的长度,下标为数组长度减一 public static void selectSort(int[] arr) { //考虑边界值 if (arr == null || arr.length < 2) { return; } int N = arr.length; for (int

kuilian的博客 715

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

冒泡,选择,插入排序 java版

公共代码交换两个数的方法: [code="java"] /** * 交换两个数的方法 * @param data 交换的数组 * @param i 位置i的数组下标 * @param j 位置j的数组下标 */ public static void swap(int[] data, int i,int j){ // 当只有是不同一位置的两个数才进行交换...

hpjianhua的专栏 128

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

冒泡排序-选择排序-插入排序-快速排序(java版实现)

排序就是将输入的数字按照从小到大的顺序进行排列。由于排序是一个比较基础的问题,所以排序算法的种类也比较多。最近学习了几种常见的排序算法,下面介绍如何使用java代码实现对数组进行从下到大排序。 一、冒泡排序 1、概念 冒泡排序通过序列左边开始比较相邻位置数字的大小,左边数字大于右边了交换位置,只到最大的到最右边,然后再从左边开始比较相邻位置的数字,左边大于右边交换位置,只到最大...

jiankang66的博客 538

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

排序算法(Java、C++版)——选择排序、插入排序、冒泡排序(一)

选择排序 选择排序 找最小的元素 找到了 在找第二小的元素 Java版本 package com.binglian.Sort; /** * 选择排序 * @author binglian * */ public class SelectionSort { // 我们的算法类不允许产生任何实例 private SelectionSort(){} ...

xiaoxin0630的博客 146

数据结构与算法Java版:冒泡排序、选择排序和插入排序

冒泡排序 依次比较相邻的元素。如果前一个比后一个大,就交换位置。因为相同的元素不会发生交换,因此是稳定的。 public static int[] bubble(int[] arr) { for (int i = 0; i < arr.length; i++) { for (int j = i; j < arr.length; j++) { if (arr[j] < arr[i]) { int temp = arr[i]; arr[i] = arr[.

杂文集 137

冒泡排序、选择排序、插入排序(java版)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34186931的博客 128

冒泡、选择、插入排序(Java版)

/** 冒泡排序*/ public static void maoPaoSort(int[] array){ for(int i=0; i&lt;array.length-1;i++){ for(int j=0; j&lt;array.length-1-i; j++){ if(array[j] &gt; array[j+1]){ ...

qq_36957587的博客 129

Java版排序算法——冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序【含代码以及讲解】

常见的排序算法复杂度: 冒泡排序:时间复杂度O(n^2) 排序方法: 比较相邻元素,如果第一个比第二个大,则交换他们 一轮下来,可以保证最后一个数是最大的 执行n-1轮,就可以完成排序 实现思路: 用二重循环实现,外循环变量设为i,内循环变量设为j。假如有n个数需要进行排序,则外循环重复n-1次,内循环依次重复n-1,n-2,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,...,n-1,对于每一个i,j的值依次为0,1

jiayoudangdang的博客 2490

java实现冒泡排序,选择排序,插入排序,快速排序(简洁版)及性能测试

1、冒泡排序是排序里面最简单的了,但性能也最差,数量小的时候还可以,数量一多,是非常慢的。 它的时间复杂度是O(n*n),空间复杂度是O(1) 代码如下,很好理解。 public void bubbleSort(int[] arr){ int temp=0; for(int i=0;i<arr.length;i++){ for(int j=arr.length-1;j

达叔 5247

经典排序算法:快速排序、归并排序、堆排序、选择排序、希尔排序、插入排序、冒泡排序(Java版)

经典排序算法定义排序类插入排序希尔排序选择排序冒泡排序快速排序堆排序归并排序 用Java实现经典的排序算法,便于以后查询使用 定义排序类 public class Sort{ public int[] arr; public Sort(int n){ arr=new int[n]; } public Sort(int[] arr){ int len=arr.length; this.arr=new int[len]; for(int i=0;i<len;++i){ thi

shiaiao的博客 251

数据结构--冒泡排序、归并排序、快速排序、选择排序、插入排序(Java版)

一、冒泡排序 1、思路 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 针对所有的元素重复以上的步骤,直到没有任何一对元素需要比较。 2、实现 /** * 排序算法的接口 * @author hoaven */ public interface ISort { /** * 对数组array进行升序排序 * @p...

hoaven的博客 806

java实现各种排序算法(包括冒泡排序,选择排序,插入排序,快速排序(简洁版))及性能测试

1、冒泡排序是排序里面最简单的了,但性能也最差,数量小的时候还可以,数量一多,是非常慢的。      它的时间复杂度是O(n*n),空间复杂度是O(1)      代码如下,很好理解。 public static void bubbleSort(int[] arr){ for(int i=0;i<arr.length;i++){ for(int j=0;j<arr.le

real.me 1万+
上一篇: oracle使用package来包装存储过程或function
下一篇: 编程语言中的二进制和位运算符
青蛙小王子
博客等级 码龄16年 239粉丝 311原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值