package sort;
/*
最简单的排序算法之一是插入排序(insertion sort).插入排序由N-1躺排序组成。对于
p = 1到N -1 趟,插入排序保证从位置0到位置p上的元素为已排序状态。插入排序利用了这样的
事实:已知位置0到位置p - 1 上的元素处于排过序的状态。
例子:
原始数组:34 8 64 51 32 21 移动的位置
p = 1趟之后:8 34 64 51 32 21 1
p = 2趟之后:8 34 64 51 32 21 0
p = 3趟之后:8 34 51 64 32 21 1
p = 3趟之后:8 32 34 51 64 21 3
p = 3趟之后:8 21 32 34 51 64 4
在地p趟,我们将位置p上的元素向左移动,知道他们在前p + 1
个元素中的正确位置被找到的地方。
运行时间:
由于每次嵌套循环的每一个都花费N次迭代, 因此插入排序为0(N2),而且这个界是精确的
假如已经事先排好序的话,那么运行时间就是0(N)为线性时间,因为第二个for循环并没有生效
*/
public class Insert_sort {
public static<AnyType extends Comparable<? super AnyType>> void insertionSort(AnyType[] a){
int j;
for(int p = 1; p < a.length; p++){
AnyType tmp = a[p];
for(j = p; j > 0 && tmp.compareTo(a[j - 1]) < 0; j--)
a[j] = a[j - 1]; //元素都要往后挪
a[j] = tmp;
}
}
public static void main(String[] args) {
Integer[] a = new Integer[]{34, 8, 64, 51, 32, 21};
insertionSort(a);
for(int number : a)
System.out.print(number + ",");
}
}
相关推荐
数据结构与算法之插入排序优化
前言 欢迎各位坚持不懈的小伙伴么继续来到我的博客,与我一起探讨程序员必备技能——数据结构与算法。在看这篇博客之前,要先去了解上一篇博客的核心思想的,才能明白优化之所在。 上一篇博客链接地址:数据结构与算法之插入排序_xue_mall的博客-优快云博客 插入排序优化 上一篇中的核心插入排序代码: /** * 插入排序实现主逻辑 * * @param arr 目标数组 */ private static void insertSort(int
【插入排序算法】【直接插入排序算法】
直接插入排序1.直接插入排序定义2.直接插入排序流程 督促自己学习总结,特用文章的形式记录下来,共同进步 1.直接插入排序定义 待排序的数组分为三块,已排序列,正在排序位置,无序序列 有序序列 R[0,i-1] R[i] 无序序列[i+1,n] 需要将元素R[i]插入到有序子序列R[0,i-1]中,需要以下几步: 在R[0,i-1]找到R[i]的位置k 将k -> i-1的位置上的所有元素向后移动一位 把R[k] = R[i] 重复上述流程直到i=n-1 2.直接插入排序流程 待排序
使用 Cadence ams 仿真器 对 混合信号电路 进行仿真
文章目录Cadence 基于ams仿真器的混合信号电路仿真建立数字(Digital)模块建立 Analog - Digital 混合仿真原理图建立 Analog - Digital 混合仿真config文件配置混合信号电路仿真环境针对混合信号电路demo进行仿真 Cadence 基于ams仿真器的混合信号电路仿真 你好,这里是一篇关于使用 Cadence 软件通过 ams 仿真器对混合信号电路(D...
C 排序算法:插入排序
C 排序算法:插入排序 一、实现 #include<stdio.h> void insertSort(int *p, int size); void disArr(int *p,int size); int main() { int arr[] = {1,9,8,7,0,2}; insertSort(arr, sizeof(arr) / sizeof(*arr)); disArr(arr, sizeof(arr) / sizeof(*arr)); return 0; } void insertS
yolov11使用记录(训练自己的数据集)
本文介绍了如何安装和使用Ultralytics YOLOv11进行目标检测。首先,通过Anaconda创建并激活虚拟环境,安装必要的依赖库如PyTorch和Ultralytics。接着,从GitHub下载YOLOv11源码,并在PyCharm中配置环境。下载预训练的YOLOv11模型后,通过编写简单的Python脚本进行图片检测,验证环境配置的正确性。最后,文章提到可以基于此环境训练自定义模型。整个过程涵盖了从环境搭建到模型应用的完整流程,适合初学者快速上手YOLOv11。
sentaurus学习笔记(一)器件仿真
之前有跟大家说,以后转到sentaurus,因此silvaco会用的比较少,结果发现真的有一点贪心厌旧的感觉,现在基本上不用silvaco(lll¬ω¬)故这篇文章,将为大家带来的是关于sentaurus的结构仿真和器件的特性的提取。我们还是老规矩,先上结构图。 还是一个经典的IGBT结构,这是一个典型的N型IGBT,下面我将把一些相关的结构,和具体的写法用下面一幅图表达出来。 这里因为方便看,我们把器件的比例画的比较抽象。可以看到的是,这里有很多的距离参数是用一些变量名来写的,这也是sentaurus
“深入理解”—插入排序算法
(尊重劳动成果,转载请注明出处:http://blog.youkuaiyun.com/qq_25827845/article/details/51728669冷血之心的博客) 总结下自己对插入排序的理解。 插入排序算法思想:每趟将一个元素,按照其关键字的大小插入到它前面已经排序的子序列中,依此重复,直到插入全部元素。 插入排序包括:直接插入排序、二分插入排序以及希尔排序。 1、直接插入排序...
英飞凌TC3xx实战:PWM中点触发ADC采集+DMA自动搬运完整配置流程(基于ILLD库)
本文详细介绍了在英飞凌TC3xx系列微控制器上使用ILLD库实现PWM中点触发ADC采集并通过DMA自动搬运数据的完整配置流程。该方案适用于电机控制、电源管理等需要高精度定时采集的场景,通过GTM生成PWM信号、ADC采集和DMA传输实现全硬件自动化流程,显著提升系统效率。
数组的插入排序和快速排序
前言 关于对数组的排序,在算法中有很多方法,较为简单的有冒泡,选择,插入等一些使人熟知的算术方法,在当今这个追求效率的社会,算法的好坏对程序本身有着重要的影响。而我们在判定算法好坏的时候,时间复杂度是一个重要的标尺, 而对数组排序中,插入排序和快速排序的效率要比冒泡和选择排序的效率要高,而今天就来聊一聊插入排序和快速排序的原理和实现。 插入排序 插入排序的基本操作就是将一个数据插入
C/C++ 计算程序运行的时间
C/C++计算程序执行时间的方法,精度依次增加,推荐度也依次增加 1.#include <time.h> clock_t start, finish; double process_interval ; start=clock(); process(); //要计时的程序 finish=clock(); process_interval =(double)(finish-star...
利用树莓派制作智能音箱
利用树莓派制作智能音箱
【数据结构】插入排序
数据结构中的插入排序 参考代码如下: /* 名称:插入排序 语言:数据结构C语言版 编译环境:VC++ 6.0 日期: 2014-3-26 */ #include #include #include typedef int KeyType; // 定义关键字类型为整型 typedef int InfoType; // 定义其它数据项的类型 // 记录类型 ty
Linux:安装Debian最新10.x操作系统(超详细)
安装Debian最新10.x操作系统安装Debian最新10.x操作系统1.下载Debian镜像2. 镜像安装引导启动页面,选择图形化安装:选择语言、时区,选中后点击continue:选择键盘模式:配置Hostname主机名,设置Root密码创建普通用户名和密码,进入磁盘分区步骤,选择“所有文件放在同一个分区”确认分区信息磁盘配置完,进入软件安装模块:选择源:进入软件包配置,等待配置结束根据需要选择软件包安装3. 安装完成重启后登录使用 安装Debian最新10.x操作系统 1.下载Debian镜像 下载D
数据结构-排序-表插入排序
数据结构-排序-表插入排序 1.算法思想 表插入排序的思想: 2.算法复杂度 执行时间: 附加空间: 是否是稳定的排序方法: 3.算法实现 运行截图 欢迎大家关注我的博客:breeziness123 转载说明出处 ...
RH850从0搭建Autosar开发环境【17】- Davinci Configurator之DCM模块配置详解(下)
RH850从0搭建Autosar开发环境【17】- Davinci Configurator之DCM模块配置详解(下)
pscad IEEE标准系统搭建说明
pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。
【数据结构】插入排序、选择排序、冒泡排序、希尔排序、堆排序
生活中我们总是会碰到各种各样的排序,今天我们就对部分常用的排序进行总结和学习,今天的内容还是相对比较简单的一部分,各位一起加油哦!
迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)
迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)
数据结构排序系列详解之一 插入排序
复习之余,就将数据结构中关于排序的这块知识点整理了一下,写下来是想与更多的人分享,最关键的是做一备份,为方便以后查阅。 排序 1、概念: 有n个记录的序列{R1,R2,.......,Rn}(此处注意:1,2,n 是下表序列,以下是相同的作用),其相应关键字的序列是{K1,K2,.........,Kn}。通过排序,要求找出当前下标序列1,2,......,n的一种排列p1,p2,
温度PID控制PLC程序
温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
数据结构的运算之插入排序
前面分享完数据结构运算的查找后,今天,我们来看看数据结构的运算中的排序问题,排序问题分为很多种,记得前面有一期文章已经有分享过八种比较常见的排序。下面博主会分享几种比较好用的排序。我们一起来看看吧 首先:插入的结点可能存在多种关键信息,所以有一下定义: 第一种排序;插入排序 ...
JAVA数据结构与算法之插入排序
前言 最近面临毕业就业,在复习数据结构与算法,为了更好地掌握,加深印象,所以决定写一些博客来知识复现。 温馨提示:这篇博客可能不适合刚学数据结构的新手。 算法的简单介绍 插入排序(Insertion Sorting)的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有 序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排 序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。 代码实现 package
数据结构 Java 实现 插入排序
public class inserSort { static void insertSort(List<Integer> list) { int length = list.size(); int j, i, b; for (i = 1; i < length; i++) { b = list.get(i); if (b < list.get(i - 1)) { .
数据结构教程--李春葆版(总结)之排序-插入排序
本文的主要内容来自数据结构教程--李春葆版,由“你是木头人”博主进行总结。 插入排序 性质:每次将一个待排序的元素,按其关键字大小插入到已经排好序的子表中的适当位置,直到全部元素插入完成为止。 直接插入排序 //直接插入排序-稳定 typedef struct { int key; }RecType; void InsertSort(RecType R[],int n) { int i,...
数据结构,插入排序
【代码】数据结构,插入排序。
数据结构——排序(插入排序)
希尔排序是对直接插入排序的改进,也称为缩小增量排序。它通过将数据分成若干个较小的子序列,对每个子序列进行插入排序,然后逐步减少子序列的数量和间隔,最终对整个序列进行一次直接插入排序,使得整个序列基本有序,从而提高排序效率。插入排序是一种简单且直观的排序算法,在实际应用和算法学习中都具有重要地位。它主要分为直接插入排序和希尔排序两种形式,每种都有其独特的特点和应用场景。
数据结构之插入排序
来一曲插播如何,铛铛~~ 这就是插入排序的代码 public class Insertion{ public static void sort(Comparablep[] a){ for(int i = 1; i < a.length; i++){ for(int j = i; j > 0; j--){ if(greater(a[j-1], a[j])){ exch(a, j
【数据结构----笔记4】插入排序算法之【折半插入排序算法】
/*______________________________________________________________________________________________________________ 文件说明: 【1】根据数据元素是否完全在内存中,可以将排序算法分为两类:【内部排序】,【外部排序】 【2】【内部排序】是指在排序期间元素全部存放在内存中的元素;
Golang数据结构-插入排序
文章目录一、Golang数据结构-选择排序1.基本介绍二、使用步骤1.编写冒泡排序的函数2.编写主函数测试三、运行结果 一、Golang数据结构-选择排序 1.基本介绍 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下: (1) 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 (2) 选择排序的主要优点与数据移动有关。如果某个元素位于正确的最..
1393



被折叠的 条评论
为什么被折叠?



