插入排序(学习笔记)

news/2024/10/22 15:30:04/

插入排序

每一轮插入排序后的结果与打扑克牌取牌原理相似,将取到的牌插入到合适的位置,但在程序实现方面还是基于交换的算法。
它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增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.ppmy.cn/news/1169174.html

相关文章

容器技术基础

1. Linux Namespace和Cgroups 对于 Docker 等大多数 Linux 容器来说&#xff0c;Cgroups 技术是用来制造约束的主要手段&#xff0c;而 Namespace 技术则是用来修改进程视图的主要方法。 1.1 PID Namespace //Linux 系统正常创建线程 int pid clone(main_function, stack_s…

负采样:如何高效训练词向量

Negative Sampling 1.何为负采样 负采样是一种用于训练词嵌入模型的采样方法&#xff0c;特别适用于处理大规模词汇表的情况。负采样的目标是降低计算成本并改善模型的性能&#xff0c;同时有效地训练词向量。 2.为什么需要负采样 在传统的词嵌入模型中&#xff0c;如Word…

PHP来判断地址信息中是否包含“香港“、“澳门“或“台湾“等

你可以使用PHP来判断地址信息中是否包含"香港"、"澳门"或"台湾"等词汇。以下是一个示例代码&#xff1a; $addressInfo "香港特别行政区中环坚道甲地上段8号";// 创建一个包含需要检查的词汇的数组 $keywords ["香港", &…

el-dialog弹窗拖动

import Vue from vue// v-dialogDrag: 弹窗拖拽属性 &#xff08;重点&#xff01;&#xff01;&#xff01; 给模态框添加这个属性模态框就能拖拽了&#xff09; Vue.directive(dialogDrag, {// 属性名称dialogDrag&#xff0c;前面加v- 使用bind(el, binding, vnode) {const …

最小生成树笔记

生成树&#xff1a;删去一些边&#xff0c;使图变成树。 对于 n n n 个点的图&#xff0c;生成树有 n − 1 n-1 n−1 条边。 最小生成树&#xff1a;所有生成树中边权最小的。 对于一个图&#xff0c;不存在最大/最小生成树的条件是并查集里面没有 n n n 个点&#xff0c;…

AM@连续函数相关概念和运算性质

文章目录 abstract相关概念最值&#x1f47a;无最值的情况零点 连续函数的性质连续函数的四则运算复合函数极限关系定理函数符号和极限号交换次序 复合函数的连续性&#x1f47a;基本初等函数的连续性推论 反函数的连续性&#x1f47a; abstract 连续函数相关概念和运算性质 …

类和对象介绍

一、类 1.类的声明 class Box{//类名private://私有成员double width,length,height;//长&#xff0c;宽&#xff0c;高 public://公有成员void init(double l,double w,double h){//初始化 lengthl;widthw;heighth;}double S(){//求表面积 return (height*lengthheight*width…

✔ ★【备战实习(面经+项目+算法)】 10.21学习时间表(总计学习时间:5h30min)(算法刷题:7道)

✔ ★【备战实习&#xff08;面经项目算法&#xff09;】 坚持完成每天必做如何找到好工作1. 科学的学习方法&#xff08;专注&#xff01;效率&#xff01;记忆&#xff01;心流&#xff01;&#xff09;2. 每天认真完成必做项&#xff0c;踏实学习技术 认真完成每天必做&…