数据结构--直接插入排序

数据结构实验—C语言实验—直接插入排序 #include <stdio.h> int main() { int a[10]; int n; printf("请输入要排序数的个数:\n"); scanf("%d", &n); printf("请输入要排序的数:\n"); for (int i = 0;i < n ;i++) { scanf("%d",&a[i]); } for (int i = 1;i < n;i++) { while(a[i] < a[i - 1] & 阅读详情

直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。

一般情况下,第i趟直接插入排序的操作为:在含有i-1个记录的有序子序列r[1..i-1]中插入一个记录r[i]后,变成含有i个记录的有序子序列[1..i];并且,和顺序查找类似,为了在查找插入位置的过程中避免数组下标出界,在r[0]处设置监视哨。在自i-1起往前搜索的过程中,可以同时后移记录。整个排序过程为n-1趟插入,即:先将序列中的第1个记录看成是一个有序的子序列,然后从第2个记录起逐个进行插入,直至整个序列变成按关键字非递减有序序列为止。

这里写图片描述

其算法如下:

void InsertSort(int r[],int size)
{
    int i,j;
    for(i=2;i<=size;++i)
        if(r[i]<r[i-1])
        {
            //辅助空间r[0]临时存放变量 
            r[0]=r[i];
            //r[i]后移一位 
            r[i]=r[i-1];
            //寻找插入点 
            for(j=i-2;r[0]<r[j];--j)
                r[j+1] = r[j];
            //插入该变量 
            r[j+1]=r[0];    
        }   
}

(1)最差时间复杂度:O(n^2)
(2)最优时间复杂度:O(n)
(3)平均时间复杂度:O(n^2)
(4)稳定性:稳定

走进数据结构之排序(一)---直接插入排序 一、直接插入排序算法分析 直接插入排序是假定前i个构成的子序列是处于已排序的情况下进行排序的,然后将第i个元素与前i个构成的子序列逆序进行比较,如果是要升序排序,则比较第i个元素是否比j=i-1(i-1需要>=0)的元素大,如果是则第i个元素的位置(即j+1的位置上)保持不动,反之则将j=i-1的元素放置到i的位置,再进行第i个元素与j=i-2(i-2需要>=0)的,依次进行,如果第i个元素刚好 阅读详情

相关推荐

【数据结构】插入排序 — 直接插入排序

​直接插入排序是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。

四季轮换叶,一路招摇胜 1万+

插入排序的几种算法

1.直接插入排序 直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。 一般情况下,第i趟直接插入排序的操作为:在含有i-1个记录的有序子序列r[1…i-1]中插入一个记录r[i]后,变成含有i个记录的有序子序列r[1…i];并且,和顺序查找类似,为了在查找插入位置的过程中避免数组下标出界,在r[0]处设置监视哨。在自i-1

宋常华的博客 965

Silvaco 学习笔记——物理模型:载流子产生复合模型

对载流子的复合机制进行总结

reactortiger的博客 1万+

1.直接插入排序(插入排序)

直接插入排序(Straight Insertion Sort) 是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。 排序过程如下:(参考自严蔚敏的数据结构(c语言版)) 思想是第一次将第一个元素当作有序组,每次后面的元素插入到有序组中使其任然有序,不断的扩大有序组,当所有元素都插入完成后,那么整体数组就是有序的。 直接插入排序的方...

qq_43808700的博客 1759

机器人抓取(一)—— ROS MoveIt! 程序控制真实UR5机器人运动(python)

接上篇:ubuntu18.04 ros-melodic 安装 ur_robot_driver,驱动真实的 ur5 机器人 上文在 ubuntu 系统中配置了ur 机器人ros功能包 universal_robot 和驱动 Universal_Robots_ROS_Driver,并实现了用 moveit_rviz 拖动机器人运动。本文旨在学习如何使用 moveit python 用户接口moveit_commander,实现真实的ur5 机器人轨迹规划与控制。 1. ur5 机器人控制 参考:MoveIt »

zxxRobot的博客 1万+

多模态论文笔记——CogVLM和CogVLM2

本文详细介绍LoRA版本的多模态模型——CogVLM和CogVLM2。在SD3中使用其作为captioner基准模型的原因和优势。

haopinglianlian的博客 2204

插入排序

直接插入排序 直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增一的有序表。 整个排序过程为进行n-1趟插入,即:先将序列中的第一个记录看成是一个有序的子序列,然后从第二个记录起逐个进行插入,直至整个序列变成按关键字非递减有序序列为止。 JAVA代码实现: public static vo...

weixin_34202952的博客 152

华为od 面试八股文_测试/测试开发_01_含答案

华为od面试八股文_测试/测试开发_01_含答案

MISAYAONE的博客 3816

直接插入排序

Description 直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入 到已经排好序的有序表中,从而得到一个新的且记录数增加了1的有序表。 其算法可以描述如下: 在本题中,读入一串整数,将其使用以上描述的直接插入 排序的方法从小到大排序,并输出。 Input 输入的第一行包含1个正整数n,表示共有n个整数需 要参与排序。其中n不超过1000。 第二行包含n个用空格隔开的正整数,表示n个需 要排序的整数。 Output 只有1行,包含n个整数,表示从小到大 排序完毕的所有整数。 请在每个整

欢迎光临雨落星辰的博客 913

Spark Catalog详解

旁边的实习生说:我想要用spark代码中对hive库中的内部表和外部表进行删除(包括数据),咋感觉网上搜了一圈都找不到解决方案啊,spark这么鸡肋吗?我:你应该静下心来好好把spark基础知识进行全面学习。实习生:难道spark有这功能,而我没有学习过?咋弄啊?我:学习一下Spark Catalog。实习生:啥是Catalog啊?Spark Catalog是Spark SQL中的一个元数据管理组件,它提供了一个集中化的存储和查询表、视图和函数的位置。

SunnyRivers 1814

基于VLFM的中文指令视觉语言导航系统设计与实现

文章摘要 本文介绍了一个基于VLFM(视觉语言边界地图)的中文指令视觉语言导航系统设计与实现。该系统采用模块化架构,包含三维场景渲染、URDF机器人仿真、VLFM导航引擎、中文指令解析和PyQt图形界面五大核心模块。系统支持自定义GLB场景模型和URDF机器人模型,通过transformers和langchain实现中文自然语言指令解析,利用VLFM算法进行语义导航决策。技术实现上详细介绍了GLB模型加载器开发、URDF机器人控制、VLFM导航算法集成以及PyQt界面设计。该系统在Ubuntu环境下运行,依

AI的内部世界的博客 208

数据结构 之 【排序】(直接插入排序、希尔排序)

从后向前。

zl_dfq的博客 781

GaussDB本地安装手册(主备模式)

如果实例状态是Normal,则安装成功。三节点集中式配置文件。

Sebastien23的博客 2635

数据结构之排序【直接插入排序和希尔排序的实现及分析】

今天我们学的是直接插入排序和希尔排序相关的知识分析和代码的实现。

狂小伍的博客 1453

【云原生技术】云计算与网络:容器服务(Tencent Kubernetes Engine,简称TKE)简介

基本概念主要特点应用场景技术实现容器服务(Tencent Kubernetes Engine,简称TKE)是腾讯云提供的一种托管的容器管理服务,基于开源的Kubernetes系统。TKE旨在简化容器的部署、管理和扩展,并且提供高性能、可靠性和安全性,适用于各种规模的企业和应用。

weixin_46453070的博客 2043

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

数据结构-排序-直接插入排序

数据结构-排序-直接插入排序 1.算法思想 插入排序的基本思想: 将待排序的记录,逐个的按排序码的大小插入到目前已经排好序的若干个记录中的合适位置。 直接插入排序的思想: 初始认为第一个记录有序的,然后将第2个到最后一个记录__ (Ri)__ 依次拿出与排好序的记录的排序码,从右到左的比较,找到 __Ri__合适的位置插入,为了避免带插入的数小于已经排好序的最小排序码的记录,而造成数组...

qq_40731414的博客 504

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【数据结构初阶】--排序(一):直接插入排序,希尔排序

本文介绍了两种常见的排序算法:直接插入排序和希尔排序。直接插入排序通过逐个插入元素到有序序列实现排序,时间复杂度为O(N²),适合接近有序的数据。希尔排序是对直接插入排序的优化,采用分组排序策略,时间复杂度约为O(N^1.3)。通过10万条数据的性能测试显示,希尔排序效率明显优于直接插入排序。文章包含两种排序的C语言实现代码、测试结果及复杂度分析,适合想了解基础排序算法的读者参考。

心向往之,行必能至 1561

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

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

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

数据结构直接插入排序

/****************************************** @title: 数据结构实验 @name: <实验10-2> 排序 @object: [实验目的] 实现各种排序方法:直接插入排序,折半插入 排序,起泡排序,快速排序,简单选择排序和 堆排序。

R_house的博客 576

数据结构顺序表实现冒泡排序,简单选择,直接插入,快速排序。

#include <iostream> using namespace std; #define MAXSIZE 100 //顺序表的最大长度 typedef struct { int key; char *otherinfo; }ElemType; //顺序表的存储结构 typedef st...

美柚明治 4300

顺序表的直接插入排序-----数据结构与算法笔记

1、排序 参考书:《数据结构(C语言)》–严蔚敏等编著,清华大学出版社。

王先生的蒋小姐的博客 3939

【数据结构】插入排序(直接插入排序 && 希尔排序)

1️⃣元素集合越接近有序,直接插入排序算法的时间效率越高2️⃣此时待排序列为逆序,或者说接近逆序O(N^2)此时待排序列为升序,或者说接近升序O(N)3️⃣空间复杂度O(1),它是一种稳定的排序算法4️⃣稳定性直接插入排序在遇到相同的数时,可以就放在这个数的后面,就可以保持稳定性了,所以说这个排序是稳定的。希尔排序是对直接插入排序的优化。当gap>1时都是预排序,目的是让数组更接近于有序。当gap==1时,数组已经接近有序的了,这样就会很快。这样整体而言,可以达到优化的效果。🎉🎉。.........

qq_42996461的博客 2736

数据结构直接插入排序C语言实现

数据结构直接插入排序完整算法(C语言实现)【待补充…】 这里引用一篇博客写的蛮全面的(已运行) 链接link #include<stdio.h> #define MaxSize 100 typedef int keytype; typedef char infotype; typedef struct { keytype key; infotype data; }recty...

Avenir 875

数据结构代码——直接插入排序

数据结构代码——直接插入排序

qq_53250579的博客 275

数据结构考研 算法直接插入排序 C语言实现

考研-数据结构-C-算法-数组-排序-直接插入   语言:C语言  对一维数组的直接插入排序,过程函数化。 什么是直接插入排序? 直接插入排序就是将某一个元素与顺序表中元素进行比较,然后插入到相应的位置,使整个顺序表处于有序状态。 对于插入排序,有三种方法:1.  直接插入排序2. 二分插入排序3.希尔排序   1.为了方便阅读、理解,采取初始化数组的形式输入。当然也是可以放一...

kjcxmx的博客 3010

【java数据结构之八大排序(上)-直接插入排序,希尔排序,选择排序,堆排序,向下调整(大根堆,小根堆)等知识详解】

【java数据结构之八大排序(上)-直接插入排序,希尔排序,选择排序,堆排序,向下调整(大根堆,小根堆)等知识详解】

2301_76249062的博客 1657
上一篇: 数据结构--拓扑排序算法
下一篇: 数据结构--冒泡排序
Nim的辙迹
博客等级 码龄10年 17粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值