Java算法实现之快速排序
算法的原理啥的就不介绍了,下文的参考文章写的就很好。
算法实现参考文章
1、:http://blog.****.net/v_JULY_v/article/details/6211155
2、:http://blog.****.net/v_JULY_v/article/details/6116297
推荐一个动画演示排序算法的网站:http://www.atool.org/sort.php
一、Hoare版本
此为最基本经典的快速排序版本。基本思想为:从前向后找比基准元素大的数,从后向前找比基准元素小的数,i和j向中间靠拢。
程序运行结果:
第1次排序后:(4132)(5)(678) 基准元素是:5
第2次排序后:(213)(4)() 基准元素是:4
第3次排序后:(1)(2)(3) 基准元素是:2
第4次排序后:(12345)(6)(78) 基准元素是:6
第5次排序后:(123456)(7)(8) 基准元素是:7
1,2,3,4,5,6,7,8,
二、N.Lomuto版本
此为优化了划分方法的快速排序版本。基本思想为:从前向后找比基准元素小的数,i跟随在j的后面。
程序运行结果:
第1次排序后:(213)(4)(7568) 基准元素是:4
第2次排序后:(21)(3)() 基准元素是:3
第3次排序后:()(1)(2) 基准元素是:1
第4次排序后:(1234756)(8)() 基准元素是:8
第5次排序后:(12345)(6)(7) 基准元素是:6
最终排序:1,2,3,4,5,6,7,8,