前后指针思想
我们前面文章讲的核心思想是haroe的核心思想,将keyi另一边的指针先移动,找比keyi小的,然后不动,再让keyi这边的指针移动,找比keyi大的,但是这种方法的局限性就是需要让keyi另一边的指针先移动,但是我们马上要研究的前后指针是不用考虑这么多,而且也很容易理解,这种方法也很实用,希望大家可以掌握。
我们先上动图,让我们更好的理解一下这个前后指针到底是怎么实现的呢?
就如图中所说,让cur和keyi比较,如果cur小于keyi,那么就让prev先走一步,然后将prev和cur交换,然后cur++;如果cur大于keyi,prev不动,cur++。直到cur越界了,再将prev和keyi换个位置。 我们看一组图,这样可以更加清晰的直到这个过程。
我们可以很清楚的看到这个9和7是不是通过翻转的模式翻到了prev的后面,然后prev和keyi交换以后,这些比6大的数字就都翻转到6的后面了,这个过程以后就是我们以前写的小区间优化了,后面都死一样的,但是这个前后指针的方法还是比haroe的那个方法便捷,而且好理解些,主要是没有那么多规矩,比较实用,还是需要掌握的。