首先从后半部分开始,如果扫描到的值大于基准数据就让high减1,如果发现有元素比该基准数据的值小(如上图中18<=tmp),就将high位置的值赋值给low位置 ,结果如下:
然后开始从前往后扫描...,如果扫描到的值小于基准数据就让low加1,如果发现有元素大于基准数据的值(如上图46=>tmp),就再将low位置的值赋值给high位置的值,指针移动并且数据交换后的结果如下:
然后再开始从后向前扫描...,原理同上,发现上图11<=tmp,则将low位置的值赋值给high位置的值 ,结果如下:
然后再开始从后向前扫描,原理同上,发现上图11<=tmp,则将high位置的值赋值给low位置的值,结果如下...一些小结论
从上面的过程中可以看到:
①先从队尾开始向前扫描且当low tmp,则high–,但如果a[high] < tmp,则将high的值赋值给low,...,向前挪动high指针
while (low = tmp) {
high--;
}
// 如果队尾元素小于tmp了,需要将其赋值给