以 12,11,15,23,8,10为例
随机选取一个基准,我是习惯性选取第一个元素,以12为基准
一、以12为基准

由于选的基准元素是左边的,所以最右边开始遍历比较。10小于12,则a[i]=a[j]
然后,从左遍历比较,由于刚刚交换了元素,所以L前进一步,即++i

11小于12,则不动。L继续前进一步,++i

15大于12,则a[j]=a[i]

由于刚刚交换了元素,则R后退一步,即--j

8小于12,则把8放左边,a[i]=a[j]

由于刚刚交换了元素,所以L前进一步,即++i

15大于12,则a[j]=a[i]

由于刚刚交换了元素,则R后退一步,即--j

此时i=j,则退出whlie循环。a[i]=tmp,即a[i]=12。
由于12的左边区间和右边区间距离均不为 1。所以要对左边部分和右边部分继续排序!
先排左边,10,11,8
二、以10为基准

从右开始遍历,8小于10,则把8移到左边,a[i]=a[j]

由于发生了元素交换,则开始从左边遍历,L前进一步,++i

11大于10,则将11移到右边,a[j]=a[i]

由于发生了元素交换,则开始从右边遍历,R后退一步,--j

此时i=j,则退出whlie循环。a[i]=tmp,即a[i]=10。
由于10的左边区间和右边区间距离均为 1,所以元素已经是有序状态!
再排右边,23,15
三、以23为基准

15小于23,将15移到左边,a[i]=a[j]

由于发生了交换,则L前进一步,++i

此时i=j,则退出whlie循环。a[i]=tmp,即a[i]=23。
由于23的左边区间为 1,所以元素已经是有序状态!
此时,数组中的元素为有序状态了。