数据结构排序之插入排序

数据结构-折半插入排序 #include #include #include #define MAXSIZE 20 typedef int KeyType; typedef char InfoType; //结构体定义 typedef struct { KeyType key; InfoType otherinfo; }RedType; typedef struct { RedType r 阅读详情
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 + ",");
    }

}
数据结构(C语言版) 折半插入排序 折半插入排序示例: 此处以数据2的排序为例,用i从左到右遍历到下标为5的位置,发现此处的值2小于前一位的值5 下标 0 1 2 3 4 5 6 数据 1 3 4 5 2 6 遍历位置 i 将2放到缓存0的位置,下限low从下标1开始,上限high从下标i-1开始 计算折半位置为m = (low + high) / 2=2 下标 0 1 2 3 4 5 ... 阅读详情

相关推荐

数据结构与算法之插入排序优化

前言 欢迎各位坚持不懈的小伙伴么继续来到我的博客,与我一起探讨程序员必备技能——数据结构与算法。在看这篇博客之前,要先去了解上一篇博客的核心思想的,才能明白优化之所在。 上一篇博客链接地址:数据结构与算法之插入排序_xue_mall的博客-优快云博客 插入排序优化 上一篇中的核心插入排序代码: /** * 插入排序实现主逻辑 * * @param arr 目标数组 */ private static void insertSort(int

xue_mall的博客 1393

【插入排序算法】【直接插入排序算法】

直接插入排序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.直接插入排序流程 待排序

珍心 1419

使用 Cadence ams 仿真器 对 混合信号电路 进行仿真

文章目录Cadence 基于ams仿真器的混合信号电路仿真建立数字(Digital)模块建立 Analog - Digital 混合仿真原理图建立 Analog - Digital 混合仿真config文件配置混合信号电路仿真环境针对混合信号电路demo进行仿真 Cadence 基于ams仿真器的混合信号电路仿真 你好,这里是一篇关于使用 Cadence 软件通过 ams 仿真器对混合信号电路(D...

mymatin1004的博客 2万+

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

Bryan_QAQ的博客 242

yolov11使用记录(训练自己的数据集)

本文介绍了如何安装和使用Ultralytics YOLOv11进行目标检测。首先,通过Anaconda创建并激活虚拟环境,安装必要的依赖库如PyTorch和Ultralytics。接着,从GitHub下载YOLOv11源码,并在PyCharm中配置环境。下载预训练的YOLOv11模型后,通过编写简单的Python脚本进行图片检测,验证环境配置的正确性。最后,文章提到可以基于此环境训练自定义模型。整个过程涵盖了从环境搭建到模型应用的完整流程,适合初学者快速上手YOLOv11。

IT菜鸟 7547

sentaurus学习笔记(一)器件仿真

之前有跟大家说,以后转到sentaurus,因此silvaco会用的比较少,结果发现真的有一点贪心厌旧的感觉,现在基本上不用silvaco(lll¬ω¬)故这篇文章,将为大家带来的是关于sentaurus的结构仿真和器件的特性的提取。我们还是老规矩,先上结构图。 还是一个经典的IGBT结构,这是一个典型的N型IGBT,下面我将把一些相关的结构,和具体的写法用下面一幅图表达出来。 这里因为方便看,我们把器件的比例画的比较抽象。可以看到的是,这里有很多的距离参数是用一些变量名来写的,这也是sentaurus

weixin_43262021的博客 2万+

“深入理解”—插入排序算法

(尊重劳动成果,转载请注明出处:http://blog.youkuaiyun.com/qq_25827845/article/details/51728669冷血之心的博客) 总结下自己对插入排序的理解。 插入排序算法思想:每趟将一个元素,按照其关键字的大小插入到它前面已经排序的子序列中,依此重复,直到插入全部元素。 插入排序包括:直接插入排序、二分插入排序以及希尔排序。 1、直接插入排序...

冷血之心的博客 1万+

英飞凌TC3xx实战:PWM中点触发ADC采集+DMA自动搬运完整配置流程(基于ILLD库)

本文详细介绍了在英飞凌TC3xx系列微控制器上使用ILLD库实现PWM中点触发ADC采集并通过DMA自动搬运数据的完整配置流程。该方案适用于电机控制、电源管理等需要高精度定时采集的场景,通过GTM生成PWM信号、ADC采集和DMA传输实现全硬件自动化流程,显著提升系统效率。

weixin_42536058的博客 530

数组的插入排序和快速排序

前言 关于对数组的排序,在算法中有很多方法,较为简单的有冒泡,选择,插入等一些使人熟知的算术方法,在当今这个追求效率的社会,算法的好坏对程序本身有着重要的影响。而我们在判定算法好坏的时候,时间复杂度是一个重要的标尺, 而对数组排序中,插入排序和快速排序的效率要比冒泡和选择排序的效率要高,而今天就来聊一聊插入排序和快速排序的原理和实现。 插入排序 插入排序的基本操作就是将一个数据插入

li741350149的博客 4517

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...

stu_shanghui的博客 1020

利用树莓派制作智能音箱

利用树莓派制作智能音箱

qq_61803022的博客 1776

【数据结构】插入排序

数据结构中的插入排序 参考代码如下: /* 名称:插入排序 语言:数据结构C语言版 编译环境:VC++ 6.0 日期: 2014-3-26 */ #include #include #include typedef int KeyType; // 定义关键字类型为整型 typedef int InfoType; // 定义其它数据项的类型 // 记录类型 ty

徐刘根的博客 2480

Linux:安装Debian最新10.x操作系统(超详细)

安装Debian最新10.x操作系统安装Debian最新10.x操作系统1.下载Debian镜像2. 镜像安装引导启动页面,选择图形化安装:选择语言、时区,选中后点击continue:选择键盘模式:配置Hostname主机名,设置Root密码创建普通用户名和密码,进入磁盘分区步骤,选择“所有文件放在同一个分区”确认分区信息磁盘配置完,进入软件安装模块:选择源:进入软件包配置,等待配置结束根据需要选择软件包安装3. 安装完成重启后登录使用 安装Debian最新10.x操作系统 1.下载Debian镜像 下载D

HowieXue 薛永浩的博客 3万+

数据结构-排序-表插入排序

数据结构-排序-表插入排序 1.算法思想 表插入排序的思想: 2.算法复杂度 执行时间: 附加空间: 是否是稳定的排序方法: 3.算法实现 运行截图 欢迎大家关注我的博客:breeziness123 转载说明出处 ...

qq_40731414的博客 2144

RH850从0搭建Autosar开发环境【17】- Davinci Configurator之DCM模块配置详解(下)

RH850从0搭建Autosar开发环境【17】- Davinci Configurator之DCM模块配置详解(下)

weixin_42412049的博客 2379

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【数据结构】插入排序、选择排序、冒泡排序、希尔排序、堆排序

生活中我们总是会碰到各种各样的排序,今天我们就对部分常用的排序进行总结和学习,今天的内容还是相对比较简单的一部分,各位一起加油哦!

m0_64826370的博客 937

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

数据结构排序系列详解之一 插入排序

复习之余,就将数据结构中关于排序的这块知识点整理了一下,写下来是想与更多的人分享,最关键的是做一备份,为方便以后查阅。 排序 1、概念:      有n个记录的序列{R1,R2,.......,Rn}(此处注意:1,2,n 是下表序列,以下是相同的作用),其相应关键字的序列是{K1,K2,.........,Kn}。通过排序,要求找出当前下标序列1,2,......,n的一种排列p1,p2,

奋斗的PIG 1560

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

数据结构的运算之插入排序

前面分享完数据结构运算的查找后,今天,我们来看看数据结构的运算中的排序问题,排序问题分为很多种,记得前面有一期文章已经有分享过八种比较常见的排序。下面博主会分享几种比较好用的排序。我们一起来看看吧 首先:插入的结点可能存在多种关键信息,所以有一下定义: 第一种排序;插入排序 ...

m0_63932570的博客 191

JAVA数据结构与算法之插入排序

前言 最近面临毕业就业,在复习数据结构与算法,为了更好地掌握,加深印象,所以决定写一些博客来知识复现。 温馨提示:这篇博客可能不适合刚学数据结构的新手。 算法的简单介绍 插入排序(Insertion Sorting)的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有 序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排 序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。 代码实现 package

iCanCode的博客 278

数据结构 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)) { .

qq_19551571的博客 227

数据结构教程--李春葆版(总结)之排序-插入排序

本文的主要内容来自数据结构教程--李春葆版,由“你是木头人”博主进行总结。 插入排序 性质:每次将一个待排序的元素,按其关键字大小插入到已经排好序的子表中的适当位置,直到全部元素插入完成为止。 直接插入排序 //直接插入排序-稳定 typedef struct { int key; }RecType; void InsertSort(RecType R[],int n) { int i,...

用来学习的地方 707

数据结构,插入排序

【代码】数据结构,插入排序。

wqs12_的博客 173

数据结构——排序(插入排序)

希尔排序是对直接插入排序的改进,也称为缩小增量排序。它通过将数据分成若干个较小的子序列,对每个子序列进行插入排序,然后逐步减少子序列的数量和间隔,最终对整个序列进行一次直接插入排序,使得整个序列基本有序,从而提高排序效率。插入排序是一种简单且直观的排序算法,在实际应用和算法学习中都具有重要地位。它主要分为直接插入排序和希尔排序两种形式,每种都有其独特的特点和应用场景。

2302_80919983的博客 3705

数据结构之插入排序

来一曲插播如何,铛铛~~ 这就是插入排序的代码 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

Si_kenn的博客 173

【数据结构----笔记4】插入排序算法之【折半插入排序算法】

/*______________________________________________________________________________________________________________ 文件说明: 【1】根据数据元素是否完全在内存中,可以将排序算法分为两类:【内部排序】,【外部排序】 【2】【内部排序】是指在排序期间元素全部存放在内存中的元素;

李丽的博客 590

Golang数据结构-插入排序

文章目录一、Golang数据结构-选择排序1.基本介绍二、使用步骤1.编写冒泡排序的函数2.编写主函数测试三、运行结果 一、Golang数据结构-选择排序 1.基本介绍 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下: (1) 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 (2) 选择排序的主要优点与数据移动有关。如果某个元素位于正确的最..

qq_43498850的博客 600
上一篇: JAVA之伸展树
下一篇: 高精度整数运算
LuFei_java
博客等级 码龄10年 1粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值