首页 > 其他分享 >复仇归并排序

复仇归并排序

时间:2023-10-30 23:58:12浏览次数:43  
标签:归并 边界 递归 复仇 数组 赋值 排序 left

 

归并排序就是,把一群数据一直分,一直分,分到不能再分之后,一个个按顺序把你们装进去

 

讲讲第一个难点,上面两个mergesort归并,其实这是一个把人给分开,分成两组,接着再分,再分。。。分到没办法分的时候,往下走。。。然后接着就是定义指针i j k,然后就有一个困扰了我很久的问题,为什么可以在递归中,很顺利地把a[i],a[j],放到arr数组里头,递归递归,本质上就是一个方法的重复使用,那么,它给这个数组赋值的过程,就是在递归里面一直重复的,比如递归中一直赋值进去left 和mid这样子的边界,但其实,边界是越缩越小的,而且在不同递归时期,left这些边界也会变化,比如我递归到很后面,你赋值进去的left right可能就(1,2),然后我是(3,4),然后两个小小的数组就有了,接着就return回去就是(1,4)(5,8),这样子边界越来越大进行有序数组的合并,接着再把排号的return出来就行了

标签:归并,边界,递归,复仇,数组,赋值,排序,left
From: https://www.cnblogs.com/cjtaaa/p/17799246.html

相关文章

  • 排序算法——冒泡,插入,选择排序
    冒泡排序冒泡排序是一种简单的排序算法实际上是每一次排序都会将最大的元素放到最后比较相邻的元素,如果第一个比第二个大,就交换他们两个对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数针对所有的元素重复以上的步骤点击查看......
  • 快速排序学习
    //#include<bits/stdc++.h>#include<iostream>usingnamespacestd;voidquick_sort(intq[],intl,intr){if(l>=r)return;intx=q[(l+r)/2];inti=l-1,j=r+1;while(i<j){doi++;while(q[i]<x);doj--;while(q[j]>......
  • 排序(按照第一元素)
    按照元素的第一顺序排序//maybe贪心会用到structty{ intx,y;}a[N];boolcmp(tya,tyb){ if(a.x<b.x)returntrue; returnfalse;}intmain(){ intn; cin>>n; for(inti=1;i<=n;i++) { cin>>a[i].x>>a[i].y; } sort(a+......
  • 快速排序--排序算法
    快速排序介绍快速排序是分治思想的一种体现,通过递归不断将原数列划分为一大一小两部分,从而实现对数列的排序。算法时间复杂度为O(nlogn)。特点是数据越混乱,效率越高;数据越有序,效率越低。值得注意的是快速排序是不稳定的,即相同大小的数据在排序前后的相对位置可能会发生变动。......
  • Cxgrid获取选中行列,排序规则,当前正在编辑的单元格内的值
    cxGrid,数据库中存在:GongSiNo,GongSiMc;cxGrid中显示列GongSiMc,Properties指定的是ComBoBox,GongSiMc变化时更新GongSiNo的值并存入数据库。在Properties的OnChange事件中写代码:{GSNo,GSMc:string;}GSMc:=cxgrdCZYDBTableView1.Controller.EditingController.Edit.EditingValue;......
  • 排序算法:选择排序,分别用c++、java、python实现
    选择排序介绍选择排序(SelectionSort)是一种简单的比较排序算法,它的工作原理如下:分区:将待排序的数组分成两个部分,一个部分是已排序的子数组,另一个部分是未排序的子数组。初始时,已排序的子数组为空,而未排序的子数组包含整个数组。选择最小值:从未排序的子数组中找到最小(或最大,根据......
  • 按Value对Map进行排序,技术大佬们都在用这个方法
    在Java中,Map的排序一般会根据Key或者Value来进行。按照Value对Map进行排序,通常会用在以下几种场景。1.数据可视化:如果你正在创建一个数据可视化工具,你可能会需要根据数据的值来进行排序。例如,你可能有一个表示员工工资的Map,你想要根据工资值来对员工进行排序,并在图表中展示。2.......
  • 整型数组按照字典序排序
    整型数组按照字典序排序输入...0,1,2,3,5,7,8,1001,109...输出...0,1,10,1001,2,3,5,7,8Collections.sort(list,newComparator<Integer>(){@Overridepublicintcompare(Integero1,Integero2){StringA=o1+"";StringB=......
  • 列表包裹元组,指定元组中数字大小排序字段operator用法
    importoperatorsomelist=[(1,5,8),(6,2,4),(9,7,5)]somelist.sort(key=operator.itemgetter(0))print(somelist)#[(1,5,8),(6,2,4),(9,7,5)]somelist.sort(key=operator.itemgetter(1))print(somelist)#[(6,2,4),(1,5,8),(9,7,5)]somelist.sor......
  • 运用递归学习新知识——插入排序
    还是老样子,先讲一下插入排序的一个概念,比如校合唱团要按身高排队,从左到右由矮到高,小糖同学左边的同学已经按照身高站好了,右边还很乱,于是团长小蓝姐姐想了一个办法,她叫小糖同学往左看,小糖同学左边第一位叫男低1号,左边第二位叫男低2号,右边第一位叫男高1号,右边第二位叫男高2号,以此类......