首页 > 编程语言 > 详细

算法入门——双指针:归并排序

时间:2021-06-03 23:21:14      阅读:16      评论:0      收藏:0      [点我收藏+]

双指针

一、引子

  在我早期刷leetcode入门题时就很喜欢用双指针了,下面我来详细说明一下什么是双指针以及双指针的一些应用场合,首先,双指针这个翻译已经很明确的指出了这种编程技巧的思想了,就是定义两个指针,然后对这两个指针操作从而达到降低时间复杂度的目的(如果能使用常数倍空间复杂度来使得时间复杂度成指数倍下降,这种好事何乐而不为)

  关于双指针算法的例子可以看:https://www.cnblogs.com/zyq79434/p/14753000.html

  其实有的时候我们可以用三个指针或者四个指针,只要是有限个,那对于空间复杂度来说都是O(1),但是可以达到简化时间复杂度的目的。在我们编程时,假如要对一个数组进行操作,如果当前的操作受限于这个数组的前某一项(是不知到的一项)这个时候就可以利用双指针,把前面的项定位出来便于后面的操作。或者有些时候要让数组任意两个位置动态的改变,这时候也需要用双指针。

  总之双指针是一种和方便的编程思想,有的时候可以简化不少操作。

 

例1、归并排序

  归并排序属于基础排序算法中的一种,这里有兴趣的读者可以在各种算法书或者博客上找到归并排序的描述,所以我不在对归并排序进行描述了。

  https://www.cnblogs.com/chengxiao/p/6194356.html,感兴趣可以看这位的博客。

 

  归并排序的排序函数

  技术分享图片

 

   非递归实现方法

  技术分享图片

 

   非递归实现方法,我们可以把这个数组先两两拆分然后归并,这是第一次循环,第一次大循环结束后就四四拆分,然后八八拆分依次类推,直到最后预计拆分的个数达到了数组大小,就不用再拆分了。请读者根据该思想自行理解代码

 

算法入门——双指针:归并排序

原文:https://www.cnblogs.com/zyq79434/p/14847430.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!