在代码中,我们可以看到:第一个while,j 开始移动,当 j 指向了一个比哨兵小的数时就会停下,与哨兵交换位置;接着执行第二个while,i 开始移动,当 i 指向一个比哨兵大的数时停下,与哨兵交换位置。总之,指向哨兵的指针不移动!!!
在这个问题中,我们最应该清楚的点是:我们的目的是要用哨兵将该序列一分为二,指针 i 只有遇到比哨兵小的数才会停下,指针 j 只有遇到比哨兵大的数才会停下。
如果先让 i 向左移动,就会导致比哨兵大的数也在左边,就不能达到我们想要的效果。
在代码中,我们可以看到:第一个while,j 开始移动,当 j 指向了一个比哨兵小的数时就会停下,与哨兵交换位置;接着执行第二个while,i 开始移动,当 i 指向一个比哨兵大的数时停下,与哨兵交换位置。总之,指向哨兵的指针不移动!!!
在这个问题中,我们最应该清楚的点是:我们的目的是要用哨兵将该序列一分为二,指针 i 只有遇到比哨兵小的数才会停下,指针 j 只有遇到比哨兵大的数才会停下。
如果先让 i 向左移动,就会导致比哨兵大的数也在左边,就不能达到我们想要的效果。