以 12,11,15,23,8,10为例
随机选取一个基准,我是习惯性选取第一个元素,以12为基准
一、以12为基准
![](https://img-blog.csdnimg.cn/2f5f479204544855ac277a4e45f4625e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN6IOW55qE5bCP55Wq6IyE,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
由于选的基准元素是左边的,所以最右边开始遍历比较。10小于12,则a[i]=a[j]
然后,从左遍历比较,由于刚刚交换了元素,所以L前进一步,即++i
![](https://img-blog.csdnimg.cn/99649c83480f44688883bea69d9bd11d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN6IOW55qE5bCP55Wq6IyE,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
11小于12,则不动。L继续前进一步,++i
![](https://img-blog.csdnimg.cn/01277ceaf9324a3aacffafae46b86793.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN6IOW55qE5bCP55Wq6IyE,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
15大于12,则a[j]=a[i]
![](https://img-blog.csdnimg.cn/1ebadb5344b84f3a8ff8de5974b12c66.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN6IOW55qE5bCP55Wq6IyE,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
由于刚刚交换了元素,则R后退一步,即--j
![](https://img-blog.csdnimg.cn/813073efa5c94ba0b3f46fd2efe00fa8.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN6IOW55qE5bCP55Wq6IyE,size_18,color_FFFFFF,t_70,g_se,x_16#pic_center)
8小于12,则把8放左边,a[i]=a[j]
![](https://img-blog.csdnimg.cn/0eb540a622db434696dba12edc61a224.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN6IOW55qE5bCP55Wq6IyE,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
由于刚刚交换了元素,所以L前进一步,即++i
![](https://img-blog.csdnimg.cn/43aef3cfdab14929a8d03d3f6cf313c5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN6IOW55qE5bCP55Wq6IyE,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
15大于12,则a[j]=a[i]
![](https://img-blog.csdnimg.cn/af2a8e8b621b4ba79c6733f72ba7641e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN6IOW55qE5bCP55Wq6IyE,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
由于刚刚交换了元素,则R后退一步,即--j
![](https://img-blog.csdnimg.cn/51c4149a042b44388cc8c4113669439e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN6IOW55qE5bCP55Wq6IyE,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
此时i=j,则退出whlie循环。a[i]=tmp,即a[i]=12。
由于12的左边区间和右边区间距离均不为 1。所以要对左边部分和右边部分继续排序!
先排左边,10,11,8
二、以10为基准
![](https://img-blog.csdnimg.cn/f7e3af606a874a4b86165857386ddbc3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN6IOW55qE5bCP55Wq6IyE,size_19,color_FFFFFF,t_70,g_se,x_16#pic_center)
从右开始遍历,8小于10,则把8移到左边,a[i]=a[j]
![](https://img-blog.csdnimg.cn/717523b00b184ab78927463b9da5cc25.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN6IOW55qE5bCP55Wq6IyE,size_18,color_FFFFFF,t_70,g_se,x_16#pic_center)
由于发生了元素交换,则开始从左边遍历,L前进一步,++i
![](https://img-blog.csdnimg.cn/afa93637cd9a4a4f8a0f17670b9f10fc.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN6IOW55qE5bCP55Wq6IyE,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
11大于10,则将11移到右边,a[j]=a[i]
![](https://img-blog.csdnimg.cn/631a7f037b60475bb3f77ffd6da12c47.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN6IOW55qE5bCP55Wq6IyE,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
由于发生了元素交换,则开始从右边遍历,R后退一步,--j
![](https://img-blog.csdnimg.cn/b93f54b54fba46ed946d1e1344d68f88.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN6IOW55qE5bCP55Wq6IyE,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
此时i=j,则退出whlie循环。a[i]=tmp,即a[i]=10。
由于10的左边区间和右边区间距离均为 1,所以元素已经是有序状态!
再排右边,23,15
三、以23为基准
![](https://img-blog.csdnimg.cn/4075e521522948d0aced58520b6a2332.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN6IOW55qE5bCP55Wq6IyE,size_19,color_FFFFFF,t_70,g_se,x_16#pic_center)
15小于23,将15移到左边,a[i]=a[j]
![](https://img-blog.csdnimg.cn/a0c7b5525b37445490b9955a8e939e38.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN6IOW55qE5bCP55Wq6IyE,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
由于发生了交换,则L前进一步,++i
![](https://img-blog.csdnimg.cn/ff19887b639a4310a37b5b842ea3f9b4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5LiN6IOW55qE5bCP55Wq6IyE,size_18,color_FFFFFF,t_70,g_se,x_16#pic_center)
此时i=j,则退出whlie循环。a[i]=tmp,即a[i]=23。
由于23的左边区间为 1,所以元素已经是有序状态!
此时,数组中的元素为有序状态了。