当前位置: 首页 > news >正文

插入排序(学习笔记)

插入排序

每一轮插入排序后的结果与打扑克牌取牌原理相似,将取到的牌插入到合适的位置,但在程序实现方面还是基于交换的算法。
它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

import java.util.Random;public class InsertSelect {public static void main(String[] args) {int[] arr = createArray(10);printArray(arr);//插入排序insertSort(arr);System.out.println("插入排序后的数组为:");printArray(arr);}public static void insertSort(int[] arr){if (arr == null || arr.length < 2){return;}for (int i = 1; i < arr.length; i++) {//0~i 做到有序for (int j = i-1;j>=0&&arr[j]>arr[j+1];j--){//j>=0 防止j--数组下标越界//不停的交换,直到0——i是有序的swap(arr,j,j+1);}}}//交换数组元素的方法public static void swap(int[] arr,int i,int j){//异或交换法——i和j是一个位置的话就会出错arr[i] = arr[i] ^ arr[j];arr[j] = arr[i] ^ arr[j];arr[i] = arr[i] ^ arr[j];//常规交换/* int temp = arr[i];arr[i] = arr[j];arr[j] = temp;*/}//随机生成数组,数组中的元素[0,20)public static int[] createArray(int length) {int[] arr = new int[length];Random random = new Random();for (int i = 0; i < arr.length; i++) {arr[i] = random.nextInt(20);//[0,20)}return arr;}//打印数组方法public static void printArray(int[] arr){for (int i=0;i<arr.length;i++) {if (i==0){if (arr.length==1){System.out.println("["+arr[0]+"]");}else{System.out.print("["+arr[i]+",");}}else if(i==arr.length-1){System.out.println(arr[i]+"]");}else {System.out.print(arr[i]+",");}}System.out.println("--------------------------------------------------------");}
}
http://www.lryc.cn/news/204926.html

相关文章:

  • wps excel js编程
  • Python 类继承解释
  • Reactor反应器模式
  • alibaba.fastjson的使用(六) -- JavaBean==》Json字符串、JSONObject、JSONArray
  • uniapp 自定义导航栏
  • 查分小程序:一键查询成绩,班主任和家长的得力助手
  • Linux内核驱动开发的步骤
  • 【Java 进阶篇】HTML DOM 事件详解
  • redis 从小白到大师系列
  • vue使用.filter方法检索数组中指定时间段内的数据
  • Ubuntu 安装 npm 和 node
  • Matlab论文插图绘制模板第122期—函数折线图(fplot)
  • IK分词器如何修改支持跨版本ES
  • Spring MVC常用十大注解
  • 二、【MyBatis】 MyBatis入门与简单使用
  • 基于DF模式的协作通信技术matlab性能仿真
  • Angular-01:基本架构
  • 字符串划分
  • ImportError: /lib64/libstdc++.so.6: version `CXXABI_1.3.9‘ not found的解决方法
  • 华为云全新上线Serverless应用中心,支持一键构建文生图应用
  • scrapy的安装和使用
  • Kotlin中的异常处理
  • [Ubuntu 18.04] 搭建文件夹共享之Samba服务器
  • 设计模式-装饰器模式
  • 【Vs code调试C++】
  • 使用 C++创建一个简易的数据库管理系统 (DBMS)
  • 简单了解一下:NodeJS的WebSocket网络编程
  • 目标检测技术概述
  • 软件设计原则-开闭原则讲解以及代码示例
  • 分类预测 | MATLAB实现SSA-CNN-GRU-Attention数据分类预测(SE注意力机制)