快速理解数据结构之快速排序

前段时间一直在学习数据结构,在看快排时会有点小困难,不知有没有小伙伴跟我一样笨呢!

不过幸好查看完在各大资料后理解了!

接下来讲下快速理解的方法,希望对初学懵懂者有用!

以下例子

[4、2、3、1、6、7、10、8]

1.最先开始要找一个为基准,这个基准是最后才放进去的,是先存储到一个指针里面,一般是找第一个数为基准,即4

[4、2、3、1、6、7、10、8]  4

2.可以在源码中看到,快速排序选完基准后是要让这个数的右边全部大于这个数,而左边全部小于这个数,这个算法的思想是提供了两个指针,规定刚开始一个指针指向头,一个指针指向尾,即指向48。

 | (头指针)                      |(尾指针)

[4、2、5、1、6、7、10、8]  4

 |(基准)

3.先从尾指针开始从右往左第一个找比基准4小的元素,然后把这个元素放到基准的位置,自行手动后可得出下面结果:

 |                 |

[1、2、5、   、6、7、10、8]  4

                  |

然后从头指针开始从左往右找出第一个比基准4大的元素,然后把这个元素放到基准的位置,自行手动后可得出下面结果:

             ||

[1、2、    、5、6、7、10、8]  4

             |

当发现头指针尾指针重叠时,好,第一趟快速排序结束,其结果为:

[1、2] 4 [5、6、7、10、8]

这样第一趟排序的基准 4 就左边全部小于4,右边全部大于4了

然后4的左边和右边分别进行快速排序

然后一趟一趟下来后就排序完成了

希望大家动手模拟一下以方便快速理解

猜你喜欢

转载自blog.csdn.net/JEROCHAN/article/details/88686020