【经典排序算法 time: 2023-10-12】插入排序(层层优化改进)

  1. 原理
    每次循环往后面拿出一个元素排到前面有序序列中(动态演示)

  2. 插排第一版

public class InsertSort {public static void main(String[] args) {long start= System.currentTimeMillis();int[] arr = {11, 23, 69, 99, 1, 3, 45, 67, 5, 234, 678, 999, 7, 123};int[] result = insertSort(arr);System.out.println(Arrays.toString(result));System.out.println(System.currentTimeMillis()-start);}private static int[] insertSort(int[] arr) {for (int i = 1; i < arr.length; i++) {int target = arr[i];for (int j = i-1; j >= 0; j--) {if (target < arr[j]) {swap(arr, j, j+1);}}System.out.println(Arrays.toString(arr));}System.out.println("循环了" +( arr.length -1 ) + "次");return arr;}public static void swap(int[] a, int i, int j) {int t = a[i];a[i] = a[j];a[j] = t;}
}
  1. 改进一,少去一轮循环,内部循环在找到位置时提前退出,再进行交换
public class InsertSortPlus {public static void main(String[] args) {long start = System.currentTimeMillis();int[] arr = {11, 23, 69, 99, 1, 3, 45, 67, 5, 234, 678, 999, 7, 123};int[] result = insertSort(arr);System.out.println(Arrays.toString(result));System.out.println(System.currentTimeMillis() - start);}private static int[] insertSort(int[] arr) {for (int i = 1; i < arr.length; i++) {int target = arr[i];int j = i - 1;while (j >= 0) {if (arr[j] > target) {arr[j + 1] = arr[j];} else {break;}j--;}arr[j + 1] = target;System.out.println(Arrays.toString(arr));}System.out.println("循环了" + (arr.length - 1) + "次");return arr;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/101907.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ppt录屏没有声音?超实用教程来了!

随着信息技术的发展&#xff0c;ppt已经成为工作中必不可少的工具。无论是工作报告、项目展示还是学术交流&#xff0c;都离不开ppt的辅助。屏幕录制功能是ppt的一个重要特性&#xff0c;可以帮助用户方便地录制幻灯片演示&#xff0c;但在使用过程中&#xff0c;有时会遇到ppt…

ubuntu配置yolov5环境

本文硬件平台为工控机&#xff0c;系统环境为ubuntu18 配置yolov5步骤 1.下载pytorch和torchvision软件包 由于在线安装容易出现安装失败&#xff0c;所以本文使用的是本地安装。本文是基于miniconda安装的&#xff0c;miniconda安装参考之前的博客&#xff1a;ubuntu中安装m…

开发者福利:免费好用的API推荐

企业基本信息(含联系方式)&#xff1a;通过公司名称/公司ID/注册号或社会统一信用代码获取企业基本信息和企业联系方式&#xff0c;包括公司名称或ID、类型、成立日期、电话、邮箱、网址等字段的详细信息。企业商标信息&#xff1a;获取商标的有关信息&#xff0c;包括商标图片…

微信小程序报错request:fail -2:net::ERR_FAILED(生成中间证书)

微信小程序报错request:fail -2:net::ERR_FAILED-生成中间证书 前言一、检查网站ssl证书二、生成证书方法1.获取中间证书手动合并1.进入网站&#xff1a;[https://www.myssl.cn/tools/downloadchain.html](https://www.myssl.cn/tools/downloadchain.html)2.点击下一步3.手动合…

C++教程(2)

C 环境设置 本地环境设置 如果您想要设置 C 语言环境&#xff0c;您需要确保电脑上有以下两款可用的软件&#xff0c;文本编辑器和 C 编译器。 文本编辑器 这将用于输入您的程序。文本编辑器包括 Windows Notepad、OS Edit command、Brief、Epsilon、EMACS 和 vim/vi。 文…

uniapp:幸运大转盘demo

<template><view class"index"><image src"../../static/img/158.png" mode"" class"banner"></image><view class"title">绿色积分加倍卡拿到手软</view><almost-lottery :lottery…

招投标系统简介 企业电子招投标采购系统源码之电子招投标系统 —降低企业采购成本

功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查看所…

cuML机器学习GPU库

目录 一、开始安装 1、创建虚拟环境 2、激活该虚拟环境 3、安装cuML 4、安装ipykernel 5、在jupter上使用&#xff0c;所以需要配置一下新的内核 二、调试 1、原始机器学习库运行 2、cuml库运行 以下安装教程为基于Linux系统&#xff0c;cuda版本为11.3.109、驱动530.…

智能机场系统:打造出行体验的未来

随着航空业的迅猛发展&#xff0c;机场作为出行的重要枢纽&#xff0c;必须不断提升自身的服务质量和效率。智能机场系统应运而生&#xff0c;为旅客提供更加便捷、智能化的出行体验。本文将从技术应用、服务优化和安全保障三个方面&#xff0c;全面介绍智能机场系统的特点和优…

早安问候语早安心语,别把人生想太难,人生需要鼓励

1、别把人生想的太难&#xff0c;人生需要几分自我的鼓励&#xff0c;不管在什么时候&#xff0c;要有几分信念和信心&#xff0c;生活少不了哭哭笑笑。青山绿水依然在&#xff0c;来来往往人不同&#xff0c;要学会看得惯&#xff0c;还要学会看得开&#xff0c;你内心的平坦是…

正则表达式——^的两种用法

用法一: 限定开头 文档上给出了解释是匹配输入的开始&#xff0c;如果多行标示被设置成了true&#xff0c;同时会匹配后面紧跟的字符。 比如 /^A/会匹配"An e"中的A&#xff0c;但是不会匹配"ab A"中的A 用法二&#xff1a;&#xff08;否&#xff0…

C语言常见题目 过关斩将(1)C语言的那些坑题,你可知道❓

我的个人主页&#xff1a;☆光之梦☆的博客_CSDN博客-C语言基础语法&#xff08;超详细&#xff09;领域博主 欢迎各位 &#x1f44d;点赞 ⭐收藏 &#x1f4dd;评论 我的专栏&#xff1a;C语言基础语法&#xff08;超详细&#xff09;_☆光之梦☆的博客-CSDN博客&#xff08;这…

ldd--cppad--static_assert--gflags

1问题解决 ‘google’ has not been declaredbool isSmoothingMethodValid = google::RegisterFlagValidator(^ /home/ubuntu/Code_Study/path_optimizer_test-master/src/config/planning_flags.cpp:115:34: error: ‘google’ has not been declaredbool isOptimizationMetho…

学网络安全的过程 ,差点要了我的命

我真的好像感慨一下&#xff0c;这个世界真的给计算机应届生留活路了吗&#xff1f; 看着周围的同学&#xff0c;打算搞前端、JAVA、C、C的&#xff0c;一个两个去跑去应聘。你以为是00后整治职场&#xff1f; 真相是主打一个卑微&#xff1a;现阶段以学习为主&#xff08;工资…

2、服务器安装docker

# 1.卸载旧的版本 yum remove -y docker \ docker-client\ docker-client-latest\ docker-common docker-latest\ docker-latest-logrotate\ docker-logrotate docker-s…

接口与抽象类的区别

a、抽象类不能被实例化只能被继承&#xff1b;b、包含抽象方法的一定是抽象类&#xff0c;但是抽象类不一定含有抽象方法&#xff1b;c、抽象类中的抽象方法的修饰符只能为public或者protected&#xff0c;默认为public&#xff1b;d、一个子类继承一个抽象类&#xff0c;则子类…

保护互联网数据安全:关键方法与最佳实践

在当今数字化时代&#xff0c;互联网数据安全已经成为个人、企业和组织的首要任务之一。随着信息技术的迅猛发展&#xff0c;网络威胁也不断演进&#xff0c;因此保护互联网数据安全变得尤为关键。本文将介绍一些关键方法和最佳实践&#xff0c;帮助您确保互联网数据的安全性。…

input时间控件选择时禁用某个日期之前或之后

【版权所有&#xff0c;文章允许转载&#xff0c;但须以链接方式注明源地址&#xff0c;否则追究法律责任】【创作不易&#xff0c;点个赞就是对我最大的支持】 前言 仅作为学习笔记&#xff0c;供大家参考 总结的不错的话&#xff0c;记得点赞收藏关注哦&#xff01; 目录 …

微服务09-Sentinel的入门

文章目录 微服务中的雪崩现象解决办法&#xff1a;1. 超时处理2. 舱壁模式3. 熔断降级4.流量控制 Sentinel1.介绍2.使用操作3.限流规则4.实战&#xff1a;流量监控5.高级选项功能的使用1.关联模式2.链路模式3.总结 流控效果1.预热模式2.排队等待模式3.总结4.热点参数限流5.实战…