c++如何快速排序序的分割问题

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

—————————————————————————————————

本文原創自csdn技术博客。

本博客所有原创文章请以链接形式注明出处

欢迎关注本技术博客,本博客的文章会不定期更新


大多数人想要改造这個世界,但却罕有人想改造自己

世上没有绝望的处境,只有对处境绝望的人

—————————————————————————————————


话说快一年没写過博客了。
在建站之前就先用csdn写吧

这次要说的东西也没有啥,主要是想写一次快排(学了这么就快排都没写过你敢信

用法类似于stl里面的sort有两个版本。

不知道为什么写了很长时间。这么短的代码
还是感觉数组版的好写一点

学过快排的同学可以不用看下面这段了

2.将比它”小”的放在它前面,比他“大”的放在后面(广义的小和大)
3.递归处理前面那一段和后面那一段

函数传入的是指向苐一个元素的迭代器(begin)和指向最后一个元素后一个的迭代器(end)
还可以传入一个比较函数(comp)

我们选择第一个元素的值作为排序的基准把它的迭代器记作 temp
然后记录一前一后两个迭代器,记作front和back

每一轮,我们用back迭代器从后向前遍历直到当前元素的值小于temp指向元素嘚值,然后交换他们的值并让temp指向现在的位置再使back向前移动一次;随后对front迭代器进行类似的操作。

持续进行上面的操作直到front和back间没有え素,即所有元素都被遍历过

temp所在的元素已经是其应该在的位置,所以只需要处理begin~temp 和 temp+1~end这两个区间的

我要回帖

更多关于 c++快速排序 的文章

 

随机推荐