热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据结构之插入排序:直接插入排序

排序算法:直接插入排序直接插入排序的定义:直接插入排序的原理:直接插入排序的代码实现:例:直接插入排序的性能&


排序算法:直接插入排序

  • 直接插入排序的定义:
  • 直接插入排序的原理:
  • 直接插入排序的代码实现:
  • 例:
  • 直接插入排序的性能:


直接插入排序的定义:

在这里插入图片描述


直接插入排序的原理:

在这里插入图片描述


直接插入排序的代码实现:

void InsertSort(int a[],int n){int i,j;for(i&#61;2;i<n;i&#43;&#43;){ //依次将A[2]~A[n]插入到前面已排序队列a[0] &#61; a[i]; //哨兵 for(j&#61;i-1;a[0] < a[j];j--) //从后往前查找待插入位置a[j&#43;1] &#61; a[j]; //后移a[j&#43;1] &#61; a[0]; //复制到插入位置}
}

ps&#xff1a;
哨兵&#xff1a;不用判断是否比较到了最后一个元素&#xff1b;保存插入的值。
a[0] 是哨兵&#xff0c;不存放输入的数据


例&#xff1a;

在这里插入图片描述


直接插入排序的性能&#xff1a;

空间复杂度&#xff1a; O(1)
时间复杂度&#xff1a; O(n^2)


主要来自于对比关键字、移动元素&#xff0c;若有n个元素&#xff0c;则需要n-1趟处理
最好&#xff1a;原本有序&#61;>O(n)
最坏&#xff1a;原本逆序&#61;>O(n^2)
平均&#xff1a;O(n)


排序算法稳定
顺序和链式都适用


推荐阅读
  • 本文详细介绍了二叉堆的概念及其在Java中的实现方法。二叉堆是一种特殊的完全二叉树,具有堆性质,常用于实现优先队列。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • c语言二元插值,二维线性插值c语言
    c语言二元插值,二维线性插值c语言 ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
  • 深入解析Python进程间通信:Queue与Pipe的应用
    本文详细探讨了Python中进程间通信的两种常用方法——Queue和Pipe,并通过具体示例介绍了它们的基本概念、使用方法及注意事项。 ... [详细]
  • 前言:由于Android系统本身决定了其自身的单线程模型结构。在日常的开发过程中,我们又不能把所有的工作都交给主线程去处理(会造成UI卡顿现象)。因此,适当的创建子线程去处理一些耗 ... [详细]
  • 本文介绍了几个关于SQL查询中列使用的优化规则,包括避免使用SELECT *、指定INSERT列名、修改自增ID为无符号类型、为列添加默认值以及为列添加注释等。 ... [详细]
  • 大华股份2013届校园招聘软件算法类试题D卷
    一、填空题(共17题,每题3分,总共51分)1.设有inta5,*b,**c,执行语句c&b,b&a后,**c的值为________答:5 ... [详细]
  • 贡献转移在计算每个元素的作用的时候,我们可以通过反向枚举作用效果,添加到作用元素的身上,这种方法叫做贡献转移。更正式的说, ... [详细]
  • 使用Matlab创建动态GIF动画
    动态GIF图可以有效增强数据表达的直观性和吸引力。本文将详细介绍如何利用Matlab软件生成动态GIF图,涵盖基本代码实现与高级应用技巧。 ... [详细]
  • 本文深入探讨了动态赋值的概念及其在编程实践中的应用,特别是通过Java代码示例来展示如何利用循环结构动态地为数组分配值。 ... [详细]
  • 本文介绍了 PHP 的基本概念、服务器与客户端的工作原理,以及 PHP 如何与数据库交互。同时,还涵盖了常见的数据库操作和安全性问题。 ... [详细]
  • 本文将详细介绍带头双向循环链表的基本概念和实现方法,包括结构体定义、链表创建、初始化、查找、插入、删除及打印等操作。 ... [详细]
  • CentOS 7 默认安装了 MariaDB,作为 MySQL 的一个分支。然而,出于特定需求,我们可能仍需在系统中安装 MySQL。本文将详细介绍如何通过 Yum 包管理器在 CentOS 7 上安装 MySQL,并提供一些常用的 MySQL 命令。 ... [详细]
  • 本文详细探讨了如何在PHP中有效防止SQL注入攻击,特别是在使用MySQL数据库时。文章通过具体示例和专业建议,帮助开发者理解和应用最佳实践。 ... [详细]
author-avatar
咪了眼的小迷糊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有