Java算法实现之快速排序

来源:互联网 发布:网络奇谈 恐惧鸟 txt 编辑:程序博客网 时间:2024/05/17 06:17

算法的原理啥的就不介绍了,下文的参考文章写的就很好。

算法实现参考文章
1、:http://blog.csdn.net/v_JULY_v/article/details/6211155
2、:http://blog.csdn.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,