数据结构面试常见问题之Insert or Merge

😀前言
本文将讨论如何区分插入排序和归并排序两种排序算法。我们将通过判断序列的有序性来确定使用哪种算法进行排序。具体而言,我们将介绍判断插入排序和归并排序的方法,并讨论最小和最大的能区分两种算法的序列长度。

🏠个人主页:尘觉主页

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦😊

文章目录

  • Insert or Merge
    • 习题-IOM.1 插入排序的判断
      • 题意理解
      • 捏软柿子算法
    • 习题-IOM.2 归并段的判断
      • 判断归并段的长度
    • 其他数据测试
    • 😄总结

Insert or Merge

习题-IOM.1 插入排序的判断

题意理解

如何区分简单插入和非递归的归并排序

  1. 插入排序:前面有序,后面没有变化
  2. 归并排序:分段有序
    在这里插入图片描述

捏软柿子算法

ps:在插入和归并两种算法里,哪种算法比较容易判断?插入排序
判断是否插入排序

  1. 从左向右扫描,直到发现顺序不对,跳出循环

  2. 从跳出地点继续向右扫描,与原始序列比对,发现不同则判断为"非"(如果是插入排序的话,所有的元素都是跟原始序列一模一样的)
    如果在对比的过程中发现不同,则跳出循环

  3. 循环自然结束,则判断为"是",返回跳出地点

    1. 解析:(我们可以返回一个布尔值,例如非为0、是为1,但如果我返回的是"是"的话,插入排序要往下进行一步,简单返回一个1在我进行插入排序下一步的时候,还得从左向右扫描去找那个要执行下一步的那个点。所以我们返回"是"的)同时返回一个跳出的地点

如果是插入排序,则从跳出地点开始进行一趟插入

习题-IOM.2 归并段的判断

判断归并段的长度

错误的想法:

  1. 从头开始连续有序的子列长度?
    在这里插入图片描述
  2. 所有连续有序子列的最短长度?
    在这里插入图片描述
    1. 这个其实是四个一段的,但前8个刚好都是有序的
    2. 保险正确的判断方法:从原始序列出发,真的在做归并排序,每归并一趟就把归并的中间结果跟这个结果的序列做一个比对。什么时候每一个数都对上了就再把当前的归并多执行一次然后
      输出结果
3.for (l=2;l<=N;l*=2)
//在保证了l是4的情况下,要检查看能不能是8,
//我们要重复前面的步骤看两段之间的衔接点是不是有序

在这里插入图片描述
红色位置没有序了跳出循环(此时l为4,我们直接以4为归并段继续执行下一趟的归并就可以了)
在这里插入图片描述

其他数据测试

最小N(应该是多大?)
ps:边界测试是每道题里面测试非常重要的一个组成部分
N会是1吗?N等于1会出现什么情形?

N等于1就意味着整个序列里面只有一个数字,在排序前它是一个数字,在排序之后他仍然是同一
个数字,在这种情况下我不管是使用插入排序还是归并排序得到的都会是同样的结果,这样解就不
是唯一的。我们题目输出的要求是插入排序或者归并排序的其中一个,所以N=1是绝对不可以的

保证可以区分两种算法的最小N应该是:4(区分插入排序与归并排序最小要求)

  1. 插入排序第一步,什么都没变
  2. 归并排序第一步,什么都变了

尾部子列无变化,但前面变了(归并)最大N

😄总结

通过本文的介绍,我们了解了如何判断插入排序和归并排序两种算法。对于插入排序,我们可以通过从左到右扫描序列并与原始序列进行比对,如果遇到不同的元素,则判断为归并排序;如果扫描结束后没有发现不同的元素,则判断为插入排序。而对于归并排序,我们可以通过多次归并并将归并的中间结果与原始序列进行比对,直到每个元素都匹配成功,即可判断为归并排序。

此外,我们还讨论了最小和最大能区分插入排序和归并排序的序列长度。最小长度为4,因为在长度为4的序列中,插入排序的第一步不会改变序列的顺序,而归并排序的第一步会改变序列的顺序。而最大长度没有明确的界限,因为归并排序可以应对任意长度的序列。

通过掌握这些判断方法和序列长度的特点面试就不用担心啦祝您成功

😁热门专栏推荐
想学习vue的可以看看这个

java基础合集

数据库合集

redis合集

nginx合集

linux合集

手写机制

微服务组件

spring_尘觉

springMVC

mybits

等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持

🤔欢迎大家加入我的社区 尘觉社区

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python+Appium实现自动化测试的使用步骤

一、环境准备 1.脚本语言&#xff1a;Python3.x IDE&#xff1a;安装Pycharm 2.安装Java JDK 、Android SDK 3.adb环境&#xff0c;path添加E:\Software\Android_SDK\platform-tools 4.安装Appium for windows&#xff0c;官网地址Redirecting 点击下载按钮会到GitHub的下载…

Vulnhub靶机:Kioptrix_2014

一、介绍 运行环境&#xff1a;Virtualbox和vmware 攻击机&#xff1a;kali&#xff08;192.168.56.101&#xff09; 靶机&#xff1a;Kioptrix: 2014&#xff08;192.168.56.108&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://ww…

金融知识分享系列之:KD指标

金融知识分享系列之&#xff1a;KD指标 一、KD指标二、KD指标计算三、KD指标原理四、KD指标应用 一、KD指标 KD信号提供入场的工具 名称&#xff1a;随机震荡指标参数&#xff1a;&#xff08;9,3,3&#xff09;组成&#xff1a;K线&#xff0c;D线&#xff0c;20轴&#xff0…

GEE遥感云大数据林业应用典型案例及GPT模型应用

近年来遥感技术得到了突飞猛进的发展&#xff0c;航天、航空、临近空间等多遥感平台不断增加&#xff0c;数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量猛增&#xff0c;遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

LeetCode困难题----84.柱状图中的最大矩形

今天刷LeetCode时遇到了一个很有意思的题: 看了半天题解还是没理解他的代码想要表达的是什么意思,在思考了很久之后,终于,我理解了这道题,接下来让我带你们走进这道题。 这道题的大概意思是,给你一个heights[]数组,(宽为1)让你求出他们可以组合出的最大面积 首先,我们先用暴力法…

一些刷题需要用的大数据

无符号版本和有符号版本的区别就是有符号类型需要使用一个bit来表示数字的正负。 如果需声明无符号类型的话就需要在类型前加上unsigned。 整型的每一种都分为&#xff1a;无符号&#xff08;unsigned&#xff09;和有符号&#xff08;signed&#xff09;两种类型&#xff08;f…

进阶二叉树

目录 二叉树 二叉搜索树 二叉搜索树的定义 二叉搜索树的操作 哈夫曼树 哈夫曼树的定义 哈夫曼树的构造 哈夫曼树的性质 平衡二叉树 平衡二叉树的定义&#xff1a; 平衡二叉树的插入调整 1.LL插入/LL旋转 2.RR插入/RR旋转 3.LR插入/LR旋转 4.RL插入/RL旋转 二叉树…

mac【启动elasticsearch报错:can not run elasticsearch as root

mac【启动elasticsearch报错&#xff1a;can not run elasticsearch as root 问题原因 es默认不能用root用户启动&#xff0c;生产环境建议为elasticsearch创建用户。 解决方案 为elaticsearch创建用户并赋予相应权限。 尝试了以下命令创建用户&#xff0c;adduser esh 和u…

分布式之Skywalking

Skywalking skywalking是一个apm系统&#xff0c;包含监控&#xff0c;追踪&#xff0c;并拥有故障诊断能力的 分布式系统 一、Skywalking介绍 1.什么是SkyWalking Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的产品&#xff0c;它同时吸收了Zipkin /Pinpoint …

【JS】替换文本为emjio表情

最终效果展示 T1 T2 T3 T4 需求 把评论你好帅啊啊啊[开心][开心]&#xff0c;[开心] 替换为图片 思路 正则match提取[开心]到一个数组数组去重创建img标签img标签转文本. 。例&#xff1a;&#xff08;el.outerHTML&#xff09;&#xff0c;将el元素转文本字符串replaceAll…

流畅的 Python 第二版(GPT 重译)(十三)

第二十四章&#xff1a;类元编程 每个人都知道调试比一开始编写程序要困难两倍。所以如果你在编写时尽可能聪明&#xff0c;那么你将如何调试呢&#xff1f; Brian W. Kernighan 和 P. J. Plauger&#xff0c;《编程风格的要素》 类元编程是在运行时创建或自定义类的艺术。在 P…

新版 mac 浏览器乱码

现象 如下图&#xff0c;chrome 浏览器有的乱码了 解决方法 删除字体集中的微软雅黑&#xff08;下图已删除&#xff09;&#xff0c;右键移除

算法打卡day18|二叉树篇07|Leetcode 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

算法题 Leetcode 530.二叉搜索树的最小绝对差 题目链接:530.二叉搜索树的最小绝对差 大佬视频讲解&#xff1a;二叉搜索树的最小绝对差视频讲解 个人思路 因为是在二叉搜索树求绝对差&#xff0c;而二叉搜索树是有序的&#xff0c;那就把它想成在一个有序数组上求最值&…

HTML + CSS 核心知识点- 定位

简述&#xff1a; 补充固定定位也会脱离文档流、不会占据原先位置 1、什么是文档流 文档流是指HTML文档中元素排列的规律和顺序。在网页中&#xff0c;元素按照其在HTML文档中出现的顺序依次排列&#xff0c;这种排列方式被称为文档流。文档流决定了元素在页面上的位置和互相之…

探索数据结构:双向链表的灵活优势

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty’s blog 1. 前言 前面我们学习了单链表&#xff0c;它解决了顺序表中插入删除需…

深度学习——数据预处理

一、数据预处理 为了能用深度学习来解决现实世界的问题&#xff0c;我们经常从预处理原始数据开始&#xff0c; 而不是从那些准备好的张量格式数据开始。 在Python中常用的数据分析工具中&#xff0c;我们通常使用pandas软件包。 像庞大的Python生态系统中的许多其他扩展包一样…

知识蒸馏——深度学习的简化之道 !!

文章目录 前言 1、什么是知识蒸馏 2、知识蒸馏的原理 3、知识蒸馏的架构 4、应用 结论 前言 在深度学习的世界里&#xff0c;大型神经网络因其出色的性能和准确性而备受青睐。然而&#xff0c;这些网络通常包含数百万甚至数十亿个参数&#xff0c;使得它们在资源受限的环境下&…

中霖教育:注册会计师考试难度大吗?

注册会计师被很多人认为是非常具有挑战性的考试&#xff0c;内容涵盖《会计》《审计》《税法》《经济法》《财务成本管理》《公司战略与风险管理》&#xff0c;考的知识点多而复杂&#xff0c;需要牢牢掌握&#xff0c;所以很多人认为这项考试的难度非常大。 注册会计师考试分…

uniapp使用Echarts图表H5显示正常 打包app显示异常

uniapp使用Echarts在H5页面调试 调试完在H5正常显示 然后通过安卓机调试的时候 发现直接空白了 还有这个爆错 Initialize failed: invalid dom 我有多个图表、图表是通过v-for循环出来的 解决方案 原来是yarn直接安装Echarts 然后改成本地JS文件引入 gitbub文件地址 — dist/…

[python]bar_chart_race绘制动态条形图

最近在 B 站上看到了一个宝藏 up 主&#xff0c;名叫 "Jannchie见齐"&#xff0c;专门做动态条形图相关的数据可视化。 可以看到做出的效果还是很不错的&#xff0c;但工具使用的是 JS&#xff0c;不是 Python&#xff0c;于是尝试搜索了一下&#xff0c;看看 Python…