我看了很多相关的解答,发现都没说在点上,索性自己研究了一下,最后弄懂了来告诉和我一样没弄的人
在这里借用一下别人的图片
以这个例子为例,其实从左边开始,从右边开始,前面的都是一样的,没什么区别,唯一的一个区别就是,当这最后一次交换的时候
如果从右边开始
当4和9交换了之后,哨兵j继续左走,找到比6小的3停下来,然后到哨兵i往右走没找到比基数6大的数,但是哨兵i和哨兵j相遇了,所以也成功的停下来,然后交换3和6。
如果从左边开始,一样的,交换了4和9之后,哨兵i往右走找比6大的数,首先,3不符合,然后继续往右走,就找到了9,此时哨兵j个哨兵i相遇,也成功的停下来,但是,是不是发现这个交换了之后有点问题,6左边的并不是全都小于6,多了个9是吧,所以,这就出了问题。
总结一下,从左边找就是找比6大的数,最后停下来的时候就是要和6交换,所以必然导致6的左边有一个数比6要大。