考研数据结构——C语言实现插入排序

插入排序是一种简单直观的比较排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place(原地排序),不需要额外的存储空间。插入排序对于小数据集或基本有序的数据集来说非常高效。

插入排序的步骤:

  1. 将数组分为已排序和未排序两部分:初始时,已排序部分只包含第一个元素(或者为空),未排序部分包含其余元素。

  2. 从未排序部分取出元素:每次从未排序部分取出第一个元素。

  3. 在已排序部分找到插入位置:将取出的元素与已排序部分的元素进行比较,从后向前扫描。

  4. 插入元素:找到合适的位置后,将取出的元素插入到该位置。

  5. 重复以上步骤:直到未排序部分为空,此时整个数组已经排序完成。

插入排序的特点:

  1. 稳定性:插入排序是稳定的排序算法,即相等的元素在排序后仍然保持其原始顺序。

  2. 时间复杂度

    • 最好情况:当数组已经是有序的,时间复杂度为O(n)。
    • 平均情况:时间复杂度为O(n^2)。
    • 最坏情况:当数组是逆序的,时间复杂度为O(n^2)。
  3. 空间复杂度:插入排序是原地排序,不需要额外的存储空间,空间复杂度为O(1)。

  4. 适用场景:对于小数据集或基本有序的数据集,插入排序是一个不错的选择。对于大数据集,插入排序可能不是最优的选择。

插入排序虽然在最坏情况下的时间复杂度较高,但由于其简单和稳定的特性,它在实际应用中仍然有其价值。

#include <stdio.h>
#include <stdlib.h>int main() {int a[] = { 12,4,132,55,46,232,789,1,0,98,523,666 };int n = sizeof(a) / sizeof(a[0]);int i, j, k;for (i = 0; i < n - 1; i++) {for (j = i + 1; j >0 ; j--) {if (a[j] < a[j - 1]) {k = a[j - 1];a[j - 1] = a[j];a[j] = k;}elsebreak;}}for (i = 0; i < n; i++) {printf("%d", a[i]);printf(" ");}return 0;
}

结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/150145.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【python篇】python pickle模块一篇就能明白,快速理解

持久性就是指保持对象&#xff0c;甚至在多次执行同一程序之间也保持对象。通过本文&#xff0c;您会对 Python对象的各种持久性机制&#xff08;从关系数据库到 Python 的 pickle以及其它机制&#xff09;有一个总体认识。另外&#xff0c;还会让您更深一步地了解Python 的对象…

【深度】边缘计算神器之数据网关

分布式计算、云边协同、互联互通是边缘计算设备的三项重要特征。 边缘计算设备通过分布式计算模式&#xff0c;将数据处理和分析任务从中心化的云平台下放到设备网关&#xff0c;即更接近数据源的地方&#xff0c;从而显著降低了数据传输的延迟&#xff0c;提高了响应速度和处…

算法4-----综合训练(3)

一&#xff1a;优美的排列 题目&#xff1a; 有1~n的n个整数&#xff0c;用这些数构造一个数组perm&#xff0c;只要构造的数组满足以下两个条件&#xff1a; &#xff08;1&#xff09;i可以被perm[i]整除 &#xff08;2&#xff09;perm[i]可以被i整除 返回其能构造出的…

影刀RPA应用迁移应用复制完整步骤-本地工具

影刀应用迁移工具本地版 不需要输入影刀的用户名和密码就能实现应用的迁移 依赖本地电脑中登录的账号 使用方法 打开软件需要激活,请联系: 左侧选择一个账号选择需要迁移的应用选择目标账号选择要替换的应用 需要用目标账号创建一个空应用,然后在这一步选择点击替换 Q&A…

3. 轴指令(omron 机器自动化控制器)——>MC_MoveRelative

机器自动化控制器——第三章 轴指令 5 MC_MoveRelative变量▶输入变量▶输出变量▶输入输出变量 功能说明▶指令详情▶时序图▶重启运动指令▶多重启动运动指令▶异常 MC_MoveRelative 指定自指令当前位置起的移动距离&#xff0c;进行定位。 指令名称FB/FUN图形表现ST表现MC…

【环境搭建】MySQL安装部署

Win64安装MySQL Windows的玩法比较少&#xff0c;没有像MAC一样给你提供mysqld-safe等等各种的启动脚本&#xff0c;只有手动启动或者是以服务启动Mysql。 点击下载&#xff1a;MySQL5.5-8.0.7z (密码是11) 1.下载软件 这一步下载好软件就可以了&#xff0c;下载地址&#xff…

海山数据库(He3DB)技术分享:He3DB Virtual File Descriptor实现原理

引言 在 He3DB 这样的数据库系统中&#xff0c;文件操作不仅频繁而且复杂。操作系统提供的文件描述符&#xff08;FD&#xff09;数量是有限的&#xff0c;尤其在高并发和大规模数据库操作中&#xff0c;文件描述符资源可能迅速耗尽。为了应对这一挑战&#xff0c;He3DB 引入了…

《深度学习》CNN 数据增强、保存最优模型 实例详解

目录 一、数据增强 1、什么是数据增强 2、目的 3、常用的数据增强方法 4、数据预处理 用法&#xff1a; 5、使用数据增强增加训练数据 二、保存最优模型 1、什么是保存最优模型 2、定义CNN模型 运行结果&#xff1a; 3、设置训练模式 4、设置测试模式、保存最优模…

指针变量的自增、自减运算

指针变量的自增、自减运算相比较于普通变量的自增、自减运算又什么区别呢&#xff1f; 让我们先来复习一下普通变量的自增、自减运算 int main() {int i; //定义一个整型变量printf("请输入一个数字&#xff1a;\n");scanf("%d&qu…

查座位号小程序

如何通过关键词查询信息&#xff1f; 在这个信息化的时代&#xff0c;查座位号小程序为我们提供了一种方便快捷的方式来查询座位信息。无论是在大型会议还是日常办公中&#xff0c;通过小程序快速查找座位号&#xff0c;可以大大提高工作效率。以下是详细的使用指南&#xff0c…

初始MYSQL数据库(7)—— 视图

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; MYSQL 引言 前面我们学习MySQL数据库时&#xff0c;创建表之后&#xff0c;会在表中插入数据&#xff0c;在需要的时候&#xff0c;也会进行…

stm32 gpio I/O模式以及iic访问

1&#xff0c;硬件补充连接原理图引脚 #define FLASH_BASE ((uint32_t)0x08000000) /*!< FLASH(up to 1 MB) base address in the alias region */ #define CCMDATARAM_BASE ((uint32_t)0x10000000) /*!< CCM(core coupled mem…

点亮一个LED灯

一、任务分析 一个灯怎么样才会亮&#xff1f; 图中的小灯两端接正负极&#xff0c;小灯就会点亮&#xff0c;但是我们不能主动控制灯的亮灭&#xff0c;于是加入了开关。开关打开断开小灯正极&#xff0c;小灯就会熄灭&#xff0c;反之则点亮。 在板子上的灯是如何连接的&…

【学习笔记】exkmp(Z函数)

本文参考洛谷题解&#xff1a;https://www.luogu.com.cn/article/cq4b4e5f 侵删 前言 exkmp 和 kmp 要求的东西比较类似。 exkmp 可以求出 a i . . . n a_{i...n} ai...n​ 和 b b b 的最长公共前缀。 这玩意也称 z 函数。 算法流程 求解 nxt 数组 定义 n x t i nxt_i …

【大模型对话 的界面搭建-Open WebUI】

Open WebUI 前身就是 Ollama WebUI&#xff0c;为 Ollama 提供一个可视化界面&#xff0c;可以完全离线运行&#xff0c;支持 Ollama 和兼容 OpenAI 的 API。 github网址 https://github.com/open-webui/open-webui安装 第一种 docker安装 如果ollama 安装在同一台服务器上&…

博士德王道4S管理系统存在SQL注入漏洞

漏洞描述 博士王道汽车4S企业管理系统&#xff08;以下简称“王道4S系统”&#xff09;是一套专门为汽车销售和维修服务企业开发的管理软件。该系统是博士德软件公司集10余年汽车行业管理软件研发经验之大成&#xff0c;精心打造的最新一代汽车4S企业管理解决方案。石家庄博士…

三子棋小游戏

使用C语言编写代码&#xff0c;实现一个简单小游戏---三子棋 这里创建1个game.h文件&#xff0c;用来声明函数、宏的文件&#xff0c;一个game.c文件用来实现函数game&#xff08;&#xff09;&#xff0c;一个play.h文件用来作为该游戏的源文件。 具体代码如下&#xff1a; …

文件上传、amrkdown编辑器

一、文件上传 这里我以图片为例&#xff0c;进行上传&#xff0c;上传到阿里云oss&#xff08;对象存在中&#xff09; 首先&#xff0c;我们先梳理一下&#xff0c;图片上传的流程 1、前端选择文件&#xff0c;提交文件 前端提交文件&#xff0c;我们可以使用ElementUI中的…

网络:TCP协议-报头字段

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》《Linux》《网络》 文章目录 前言一、TCP协议格式16位源端口号 和 16位目的端口号4位首部长度16位窗口大小32位序号 和 32位确认序号6种标记位 和 16位紧急指针 总结 前言 本文是我对于TCP协…

大数据新视界 --大数据大厂之大数据存储技术大比拼:选择最适合你的方案

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…