青岛外贸假发网站建设,Asp网站开发入门,吴忠建设网站,工信部 网站备案规定#x1f600;前言 本文将讨论如何区分插入排序和归并排序两种排序算法。我们将通过判断序列的有序性来确定使用哪种算法进行排序。具体而言#xff0c;我们将介绍判断插入排序和归并排序的方法#xff0c;并讨论最小和最大的能区分两种算法的序列长度。 #x1f3e0;个人主… 前言 本文将讨论如何区分插入排序和归并排序两种排序算法。我们将通过判断序列的有序性来确定使用哪种算法进行排序。具体而言我们将介绍判断插入排序和归并排序的方法并讨论最小和最大的能区分两种算法的序列长度。 个人主页尘觉主页
欢迎大家这里是CSDN我总结知识的地方欢迎来到我的博客感谢大家的观看 如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦 文章目录 Insert or Merge习题-IOM.1 插入排序的判断题意理解捏软柿子算法 习题-IOM.2 归并段的判断判断归并段的长度 其他数据测试总结 Insert or Merge
习题-IOM.1 插入排序的判断
题意理解 如何区分简单插入和非递归的归并排序 插入排序前面有序后面没有变化归并排序分段有序
捏软柿子算法
ps在插入和归并两种算法里哪种算法比较容易判断插入排序 判断是否插入排序 从左向右扫描直到发现顺序不对跳出循环 从跳出地点继续向右扫描与原始序列比对发现不同则判断为非(如果是插入排序的话所有的元素都是跟原始序列一模一样的) 如果在对比的过程中发现不同则跳出循环 循环自然结束则判断为是返回跳出地点 解析(我们可以返回一个布尔值例如非为0、是为1但如果我返回的是是的话插入排序要往下进行一步简单返回一个1在我进行插入排序下一步的时候还得从左向右扫描去找那个要执行下一步的那个点。所以我们返回是的)同时返回一个跳出的地点
如果是插入排序则从跳出地点开始进行一趟插入
习题-IOM.2 归并段的判断
判断归并段的长度
错误的想法
从头开始连续有序的子列长度 所有连续有序子列的最短长度 这个其实是四个一段的但前8个刚好都是有序的保险正确的判断方法从原始序列出发真的在做归并排序每归并一趟就把归并的中间结果跟这个结果的序列做一个比对。什么时候每一个数都对上了就再把当前的归并多执行一次然后 输出结果
3.for (l2;lN;l*2)
//在保证了l是4的情况下要检查看能不能是8
//我们要重复前面的步骤看两段之间的衔接点是不是有序红色位置没有序了跳出循环(此时l为4我们直接以4为归并段继续执行下一趟的归并就可以了)
其他数据测试
最小N(应该是多大) ps边界测试是每道题里面测试非常重要的一个组成部分 N会是1吗N等于1会出现什么情形 N等于1就意味着整个序列里面只有一个数字在排序前它是一个数字在排序之后他仍然是同一 个数字在这种情况下我不管是使用插入排序还是归并排序得到的都会是同样的结果这样解就不 是唯一的。我们题目输出的要求是插入排序或者归并排序的其中一个所以N1是绝对不可以的 保证可以区分两种算法的最小N应该是4(区分插入排序与归并排序最小要求)
插入排序第一步什么都没变归并排序第一步什么都变了
尾部子列无变化但前面变了(归并)最大N
总结
通过本文的介绍我们了解了如何判断插入排序和归并排序两种算法。对于插入排序我们可以通过从左到右扫描序列并与原始序列进行比对如果遇到不同的元素则判断为归并排序如果扫描结束后没有发现不同的元素则判断为插入排序。而对于归并排序我们可以通过多次归并并将归并的中间结果与原始序列进行比对直到每个元素都匹配成功即可判断为归并排序。
此外我们还讨论了最小和最大能区分插入排序和归并排序的序列长度。最小长度为4因为在长度为4的序列中插入排序的第一步不会改变序列的顺序而归并排序的第一步会改变序列的顺序。而最大长度没有明确的界限因为归并排序可以应对任意长度的序列。
通过掌握这些判断方法和序列长度的特点面试就不用担心啦祝您成功
热门专栏推荐 想学习vue的可以看看这个
java基础合集
数据库合集
redis合集
nginx合集 linux合集
手写机制
微服务组件
spring_尘觉
springMVC
mybits
等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持
欢迎大家加入我的社区 尘觉社区 文章到这里就结束了如果有什么疑问的地方请指出诸佬们一起来评论区一起讨论 希望能和诸佬们一起努力今后我们一起观看感谢您的阅读 如果帮助到您不妨3连支持一下创造不易您们的支持是我的动力