算法_插入排序

2023-10-26

插入排序

 插入排序的思想:每一步就是将待排序的数据插入到已经排好序的数据中,直到全部数据依次按照从小(或大)的顺序排列。

 例如:
 1,4,2,5,8,3,7,1
 第一次排序:1,4;2,5,8,3,7,1
 第二次排序:1,2,4;5,8,3,7,1
 第三次排序:1,2,4,5;8,3,7,1
 第四次排序:1,2,4,5,8;3,7,1
 第五次排序:1,2,3,4,5,8;7,1
 第六次排序:1,2,3,4,5,7,8;1


例一:

void insertionSort(T arr[],int n){
    for(int i=1;i<n;i++){
       T e=arr[i];
       int j;
       // 1.插入排序是从后向前比较的
       // 2.遇见相等的情况不用交换位置,直接放到后边即可
       // 3.优化的代码在例二
       for(j=i;j>0;j--){  
           if(arr[j-1]>e)
              arr[j]=arr[j-1];
       }

        arr[j]=e;
    }
}

例二:

template<typename T>
void insertionSort(T arr[],int n){
     for(int i=1;i<n;i++){ //从第二个元素开始
         T e=arr[i];
         int j;
         for(j=i;j>0&&arr[j-1]>e;j--) // 从小到大排列,
              arr[j]=arr[j-1];
         arr[j]=e;
      }
      return;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

算法_插入排序 的相关文章

  • 静态只读字符串数组

    我在我的 Web 应用程序中使用静态只读字符串数组 基本上数组有错误代码 我将所有类似的错误代码保存在一个数组中并检查该数组 而不是检查不同常量字符串中的每个错误代码 like public static readonly string m
  • 使用 lambda 表达式注册类型

    我想知道如何在 UnityContainer 中实现这样的功能 container RegisterType
  • IdentityServer 4 对它的工作原理感到困惑

    我阅读和观看了很多有关 Identity Server 4 的内容 但我仍然对它有点困惑 因为似乎有很多移动部件 我现在明白这是一个单独的项目 它处理用户身份验证 我仍然不明白的是用户如何注册它 谁存储用户名 密码 我打算进行此设置 Rea
  • 如何判断计算机是否已重新启动?

    我曾经使用过一个命令行 SMTP 邮件程序 作为试用版的限制 它允许您在每个 Windows 会话中最多接收 10 封电子邮件 如果您重新启动计算机 您可能还会收到 10 个以上 我认为这种共享软件破坏非常巧妙 我想在我的应用程序中复制它
  • 为什么在 WebApi 上下文中在 using 块中使用 HttpClient 是错误的?

    那么 问题是为什么在 using 块中使用 HttpClient 是错误的 但在 WebApi 上下文中呢 我一直在读这篇文章不要阻止异步代码 https blog stephencleary com 2012 07 dont block
  • 当一组凭据下的计划任务启动的进程在另一组凭据下运行另一个程序时,Windows 是否有限制

    所以我有一个简单的例子 其中我有应用程序 A 它对用户 X 本地管理员 有一些硬编码的凭据 然后它使用硬编码的绝对路径启动带有这些凭据的应用程序 B A 和 B 以及 dotnet 控制台应用程序 但是它们不与控制台交互 只是将信息写入文件
  • 从同一个类中的另一个构造函数调用构造函数

    我有一个带有两个构造函数的类 C 这是代码片段 public class FooBar public FooBar string s constructor 1 some functionality public FooBar int i
  • Visual Studio 在构建后显示假错误

    我使用的是 Visual Studio 2017 构建后 sln在调试模式下 我收到错误 但是 当我通过双击错误列表选项卡中的错误来访问错误时 错误会从页面中消失 并且错误数量也会减少 我不太确定这种行为以及为什么会发生这种情况 有超过 2
  • unordered_map 中字符串的 C++ 哈希函数

    看起来 C 标准库中没有字符串的哈希函数 这是真的 在任何 c 编译器上使用字符串作为 unordered map 中的键的工作示例是什么 C STL提供模板专业化 http en cppreference com w cpp string
  • 对 std::vector 进行排序但忽略某个数字

    我有一个std vector
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • 使用 LINQ to SQL 时避免连接超时的最佳实践

    我需要知道在 net 应用程序中使用 LINQ to SQL 时避免连接超时的最佳实践 特别是在返回时IQueryable
  • 启动时的 Excel 加载项

    我正在使用 Visual C 创建 Microsoft Excel 的加载项 当我第一次创建解决方案时 它包含一个名为 ThisAddIn Startup 的函数 我在这个函数中添加了以下代码 private void ThisAddIn
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • C++ int 前面加 0 会改变整个值

    我有一个非常奇怪的问题 如果我像这样声明一个 int int time 0110 然后将其显示到控制台返回的值为72 但是当我删除前面的 0 时int time 110 然后控制台显示110正如预期的那样 我想知道两件事 首先 为什么它在
  • C++ 中的双精度型数字

    尽管内部表示有 17 位 但 IEE754 64 位 浮点应该正确表示 15 位有效数字 有没有办法强制第 16 位和第 17 位为零 Ref http msdn microsoft com en us library system dou
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • WPF DataGridTemplateColumn 组合框更新所有行

    我有这个 XAML 它从 ItemSource 是枚举的组合框中选择一个值 我使用的教程是 http www c sharpcorner com uploadfile dpatra combobox in datagrid in wpf h

随机推荐

  • 【C/C++内功心法】剖析编译链接的过程,探究源文件是如何一步步变成可执行程序,提升C/C++内功

    文章目录 前言 一 程序的翻译环境和执行环境 二 详解编译 链接 1 翻译环境 2 编译本身也分为几个阶段 2 1 预编译 预处理 2 2 编译 2 3 汇编 3 链接 3 1 合并段表 3 2 符号表的合并与重定向 总结 前言 大家好啊
  • Go中 channel的使用

    文章目录 背景 channel 简介 使用说明 声明 发送和接受数据 关闭channel 使用示例 背景 使用 sync 包和 context 包的工具可以实现多个协程之间互相协作 但是没有一种很好的方式解决多个协程之间通信的问题 gola
  • openssl实现双向认证教程(服务端代码+客户端代码+证书生成)

    一 背景说明 1 1 面临问题 最近一份产品检测报告建议使用基于pki的认证方式 由于产品已实现https 商量之下认为其意思是使用双向认证以处理中间人形式攻击 信息安全工程 中接触过双向认证 但有两个问题 第一个是当时最终的课程设计客户端
  • jquery ui draggable,droppable 学习总结

    刚接触的时候 分不清draggable和droppable的区别 瞎弄了一会 其实很简单 draggable就是 拖 的功能 droppable就是 放 的功能 一 先上一个简单例子 1 代码 2 截图 拖动 draggable之前的截图
  • 我们为什么要使用补码?

    想必对于原码 反码 补码大家并不陌生 计算机专业的同学都会学到这方面的一些知识 当初在学这部分的时候 只知道用补码可以解决0和 0的问题 但是还是没明白为什么会想到用补码 前阵子看了斯坦福大学关于范式编程的公开课 里面老师讲了这方面的内容
  • 【golang设计模式】Golang设计模式详解三

    十一 组合模式 组合模式统一对象和对象集 使得使用相同接口使用对象和对象集 组合模式常用于树状结构 用于统一叶子节点和树节点的访问 并且可以用于应用某一操作到所有子节点 composite go package composite impo
  • 生成Git ssh公钥和私钥(ppk)文件

    一 生成ssh公钥 step1 安装GIT和TortoiseGit step2 文件夹空白地方右键点击 Git Bash Here 进入终端 如果右键没有Git Bash Here 操作方法见 https mp csdn net mp bl
  • Scikit-learn之模型评估预测

    sklearn decomposition PCA scikit learn 1 2 2 documentation sklearn官网 代码以后补上 先介绍一些简单的 sklearn能做到很多传统意义上 比较简单 的机器学习 例如 分类
  • Vue+ElementUI实现表单动态渲染、校验(一)

    Vue ElementUI实现表单动态渲染 校验 一 项目需求 1 vue表单实现递归渲染 项目需求 接到新的项目需求 需要把一个json文件动态渲染成表单 并添加各种校验规则等 经过各种查资料 最终完成了此功能开发 对这块的知识点进行梳理
  • 23种设计模式

    设计模式主要分为三大类 1 创建型模式 2 结构型模式 3 行为型模式 1 创建型模式 创建型模式关注对象的创建过程 1 工厂方法模式 Factory Method Pattern 用于创建对象的接口 让子类决定实例化哪一个类 工厂方法模式
  • PRML-系列一之1.2.2~1.2.3

    期望和方差 涉及概率最重要的操作是找到函数的加权平均值 在概率分布p x 情况下函数f x 的平均值称为f x 的期望 并用E f 表示 对于一个离散分布 它由下式给出 使得平均值加权到不同x值的相应概率上 连续变量的情况下 期望用相应概率
  • Unity3D学习笔记(4)—— 牧师和魔鬼游戏

    牧师和魔鬼游戏是一款益智类游戏 游戏的目标是将3个牧师和3个魔鬼从河的一端安全地送到河的另一端 在运送过程中 船可以搭载两个人 而且必须有一人掌船 无论何时 只要河一边的魔鬼数量多于牧师的数量 游戏就会以失败结束 想玩玩的话请走传送门 Pr
  • 基于FBX SDK的FBX模型解析与加载 -(一)

    1 简介 FBX是Autodesk的一个用于跨平台的免费三维数据交换的格式 最早不是由Autodesk开发 但后来被其收购 目前被 众多的标准建模软件所支持 在游戏开发领域也常用来作为各种建模工具的标准导出格式 Autodesk提供了基于C
  • FFmpeg视频解码中的YUV420P格式

    参考文章 在做基于FFmpeg解码的视频播放时 需要涉及到帧数据存储的YUV与RGB格式 所以了解了一下 参考下述博文 https blog csdn net lanxiaziyi article details 74139729 avfr
  • 在arm平台上安装qt

    qt官网上如果没有找到对应的安装包 就需要下载源代码自行编译安装qt 时间会久一点 qt下载 进入官网下载 如下图步骤选择源代码包 以5 12 12为例 可以复制链接地址在迅雷上创建下载任务 下载速度会快些 qt的编译与安装 需要先安装gc
  • 服务器 常用命令

    screen screen S xx 创建 screen ls 列表 screen r xx 回来 在detach分离的前提下 screen d 分离
  • mysqlworkbench 程序或文件打开失败( Failed to open the program or a mwb file)

    异常状况 昨天将mysqlworkbench 6 0 以下简称mwb 卸载掉 今天需要又要装上 安装的过程没有任何错误 但是打不开mwb 或者mwb后缀的文件 弹出3个提示框 提示有3个xml的配置文件找不到 具体文件名忘记了 解决方式 1
  • 论文/机器学习笔记:SENet (Squeeze-and-Excitation Networks)

    Image 2017 挑战赛夺冠paper 1 motivation 希望显式地建模特征通道 channel 之间的相互依赖关系 通过学习的方式来自动获取到每个特征通道的重要程度 依照这个重要程度去提升有用的特征并抑制对当前任务用处不大的特
  • linux/centos 搭建 bgp 网络

    在之前的教程中 我对如何简单地使用Quagga把CentOS系统变成一个不折不扣地OSPF路由器做了一些介绍 Quagga是一个开源路由软件套件 在这个教程中 我将会重点讲讲如何把一个Linux系统变成一个BGP路由器 还是使用Quagga
  • 算法_插入排序

    插入排序 插入排序的思想 每一步就是将待排序的数据插入到已经排好序的数据中 直到全部数据依次按照从小 或大 的顺序排列 例如 1 4 2 5 8 3 7 1 第一次排序 1 4 2 5 8 3 7 1 第二次排序 1 2 4 5 8 3 7