其它经典排序算法:https://blog.csdn.net/weixin_43304253/article/details/121209905

插入排序算法:

思路:将数据分为已经排序好的数据和未排序的数据。取出未排序中的数据、从后向前的形式找到其在已经排好序数据中的位置、然后插入该数据。

过程

  • 1、将数据分为已排序和未排序两组。默认第一个数据是已排序
  • 2、从未排序数据中从前往后的顺序取出数据、和已经排好序的数据比较(从后向前比较)
  • 3、如果取出的未排序数据小于拍好序的数据、则将拍好序的数据向后移动
  • 4、找到当前的未排序数据在排序好数据中的插入位置、放入该数据
  • 5、再次从未排序数据中取出下一个数据、重复2-5

图解过程


代码实现

package com.zheng.dao;

import java.util.Random;

//插入排序算法
public class TestInsertDemo {
/**
* 1、思想:将数据分为已经排序好的数据和未排序的数据。取出未排序中的数据、从后向前的形式找到其在已经排好序数据中的位置、然后插入该数据
*/ public int[] insertArr(int[] arr) {
int len = arr.length;
if (len < 0) { //数组长度为零、返回null
return null;
} else { for (int i = 0; i < len - 1; i++) {
int current = arr[i + 1];//已经拍好序的下一个元素位置。(还未进行排序的第一个位置)
int index = i;
//然后将这个元素和之前拍好序的数组进行比较、将该数据放入合适的位置
while (index >= 0 && current < arr[index]) {//如果当前的数据比拍好序列的最后一个数据小
arr[index + 1] = arr[index];//将当前的数据向后移动一位
index--;
}
arr[index + 1] = current;//经过一轮的比较、找到放入新数据的位置
} } return arr;
} //随机生成一个数组
public int[] randomArr(int len, int maxNum, int minNum) {
int[] arr = new int[len];//定义一个一维数组
Random random = new Random();
for (int i = 0; i < len; i++) {
arr[i] = random.nextInt(maxNum - minNum + 1) + minNum;
}
return arr;
} //打印
private void Print(int[] arr) {
int len = arr.length;
System.out.print("【");
for (int i = 0; i < len; i++) {
if (i == len - 1) {
System.out.print(arr[i]);
} else {
System.out.print(arr[i] + "、");
}
}
System.out.println("】");
} public static void main(String[] args) {
TestInsertDemo testInsertDemo = new TestInsertDemo(); int[] arr = testInsertDemo.randomArr(10, 100, 50);
System.out.print("生成的随机数组:");
testInsertDemo.Print(arr);
System.out.print("选择排序后数据:");
testInsertDemo.insertArr(arr);
testInsertDemo.Print(arr); }
}

测试1:

测试2:

测试3:

插入排序算法(Java代码实现)的更多相关文章

  1. 排序算法Java代码实现(三)—— 插入排序 和 希尔排序

    因为希尔排序的核心思想是插入排序,所以本篇将两篇排序一起记录 本篇内容: 插入排序 希尔排序 (一)插入排序 算法思想: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序 ...

  2. 排序系列 之 折半插入排序算法 —— Java实现

    基本思想: 折半插入算法是对直接插入排序算法的改进,排序原理同直接插入算法: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素:排序过程即每次从无序表中 ...

  3. 排序算法系列:插入排序算法JAVA版(靠谱、清晰、真实、可用、不罗嗦版)

    在网上搜索算法的博客,发现一个比较悲剧的现象非常普遍: 原理讲不清,混乱 啰嗦 图和文对不上 不可用,甚至代码还出错 我总结一个清晰不罗嗦版: 原理: 和选择排序类似的是也分成“已排序”部分,和“未排 ...

  4. 排序系列 之 直接插入排序算法 —— Java实现

    直接插入排序算法 基本思想: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素:排序过程即每次从无序表中取出第一个元素,将它插入到有序表中,使之成为新的 ...

  5. 排序算法Java代码实现(一)—— 选择排序

    以下几篇随笔都是记录的我实现八大排序的代码,主要是贴出代码吧,讲解什么的都没有,主要是为了方便我自己复习,哈哈,如果看不明白,也不要说我坑哦! 本片分为两部分代码: 常用方法封装 排序算法里需要频繁使 ...

  6. 插入排序算法 Java实现

    插入排序算法是算法排序中的一种: 该算法是假设已有序列是有序序列,从首元素(首元素为单个元素,肯定是有序的...)开始分析,对其他元素的位置进行有序的确定: 以算法为例: public class I ...

  7. 算法-java代码实现插入排序

    插入排序  

  8. 算法-java代码实现希尔排序

    希尔排序 第8节 希尔排序练习题 对于一个int数组,请编写一个希尔排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组.保证元素小于等于2000. 测试样例: [1,2 ...

  9. 算法-java代码实现基数排序

    基数排序 第11节 基数排序练习题 对于一个int数组,请编写一个基数排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组.保证元素均小于等于2000. 测试样例: [1 ...

  10. 算法-java代码实现计数排序

    计数排序   第10节 计数排序练习题 对于一个int数组,请编写一个计数排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3], ...

随机推荐

  1. 【点击云游台湾省】今天,老子云在台湾省建了个3D房子!

    今日热搜仍然聚焦台湾省,中国新闻网发文:地图已经可以显示台湾省的每个街道.网友一片叫好! 台湾省通过平面图观察,难免看的不够真切,其实现在已经可以通过3D视角云游台湾省了! 老子云这次通过自研技术,还 ...

  2. 汇编语言基于8086CUP(想学操作系统的前奏!!!)

    汇编语言基于8086CUP(想学操作系统的前奏!!!) 1.汇编语言的产生 1.1.思维图 1.2.单位转换 1B=8bit 1KB=1024B 1MB=1024KB 1GB=1024MB 1TB=1 ...

  3. 学长告诉我,大厂MySQL都是通过SSH连接的

    大家好,我是咔咔 不期速成,日拱一卒 一.背景 之前待的几个公司,数据库.服务器权限都是给所有后端直接拉满的,但也会出现员工离职的情况,每次有人离职时都需要改数据库密码.服务器密码. 每次密码修改后得 ...

  4. Java学习--基础

    java学习 基础 Java三大版本 javase 标准版 占领桌面端(基础) javame 移动版 嵌入式开发.占领手机端 javaee 企业版 占领服务器端 Java的特性和优势 跨平台.可移植性 ...

  5. 在使用amoeba连接数据库时,报错java.lang.Exception: poolName=slaves, no valid pools

    项目场景:Mysql 实现数据库读写分离 搭建3台MySQL服务器,完成主从复制,搭建一台amoeba服务器,完成MySQL的读写分离 问题描述: 问题1. 在服务搭建完毕后,利用客户机连接amoeb ...

  6. Python自学教程1-安装pycharm和执行环境

    Python虽然简单,但是很多没有接触过的学起来还是比较困难的.因此很多人会报班去学,我觉得不需要花那个钱,只要方向正确,加上核心知识点的提炼,自学一个月左右就能上手. 我尝试写下这个自学教程,只讨论 ...

  7. 新一代分布式实时流处理引擎Flink入门实战操作篇

    @ 目录 安装部署 安装方式 Local(Standalone 单机部署) Standalone部署 Standalone HA部署 Flink On Yarn演示案例 概述 会话(Session)模 ...

  8. 2022CISCN-satool

    2022CISCN-satool 打国赛的时候自己还并不了解LLVM PASS pwn,前几天正好学习了一下LLVM PASS pwn,于是就顺便来复现一下这道题目. 首先找到二进制文件的重写函数的主 ...

  9. tomcat 10无法使用jstl 如何添加依赖

    以Tomcat 10.0.23   idea 2021.1版本为例需要添加依赖 <dependency> <groupId>org.glassfish.web</grou ...

  10. 解决eclipse中的Java文件,使用idea打开的乱码问题

    吐槽: 在克隆一些Github上面资源的时候,使用idea打开,会出现乱码的情况 而使用eclipse打开,这种情况就会消失.「是因为eclipse使用的是GBK编码,idea使用的是utf-8」 这 ...