当前位置: 首页 > news >正文

排序算法(二):插入排序

插入排序是一个对少量元素进行排序的有效算法。插入排序和很多人打牌时,整理手中的牌时的做法差不多。在开始摸牌时,我们的左手是空的,接着,一次从桌上摸起一张牌,为了找到这张牌的正确位置,我们需要把这张牌和已有的牌一一做对比。
代码实现:

def insert_sort(data):i = 1total = len(data)while i < total:current = data[i]if current > data[i-1]:i = i + 1continueelse:j = i - 1while j >= 0:if data[j] < current:breakif data[j] > current:data[j+1] = data[j]j -= 1data[j+1] = currenti += 1return data

插入排序的核心思路是:
前一个位置的数字和当前位置上的数字做对比,如果当前位置大于前一个位置,那就不动,如果比前一个位置上的数字小,那就把前一个位置上的数字后移,继续做比较,直到找到当前位置上的数字的正确位置,然后赋值。

插入排序和冒泡排序的区别是,冒泡排序是相邻2个位置上的数字做对比,然后两两交换位置,插入排序是前面位置上的数字和当前位置上的数字做对比。

http://www.dtcms.com/a/278503.html

相关文章:

  • 数据安全防护技术:筑牢信息安全防线
  • IoC容器深度解析:架构、原理与实现
  • 区块链开发协作工具全景图:从智能合约管理到去中心化治理
  • LabVIEW浏览器ActiveX事件交互
  • Oracle物化视图函数使用注意事项
  • 新型eSIM攻击技术可克隆用户资料并劫持手机身份
  • AWS RDS PostgreSQL可观测性最佳实践
  • crawl4ai--bitcointalk爬虫实战项目
  • ubuntu安装kafka(无zk版本)
  • Leaflet面试题及答案(81-100)
  • linux打包固件shell脚本
  • 打开xmind文件出现黑色
  • 理解Linux文件系统:从物理存储到统一接口
  • 【第一章编辑器开发基础第二节编辑器布局_3GUI元素和布局大小(3/4)】
  • 一般的非线性规划求解(非凸函数)
  • 自定义类型 - 联合体与枚举(百度笔试题算法优化)
  • 《C++初阶之STL》【泛型编程 + STL简介】
  • Spring原理揭秘--初识AOP
  • Spring 学习笔记
  • UI前端大数据处理新挑战:如何高效处理实时数据流?
  • JavaScript 与 C语言基础知识差别
  • GO语言中的垃圾回收(GC)
  • 怎么挑选最新贝琪入门电钢琴才高效?
  • Java进程、线程与协程对比
  • GD32/STM32嵌入CMSIS-DSP的库(基于Keil)
  • 2025年 GitHub 主流开源视频生成模型介绍
  • Go语言第一个程序--hello world!
  • arthas:Java 应用问题诊断利器
  • 企业培训笔记:axios 发送 ajax 请求
  • vue中计算属性的介绍