您的位置:首页 > 编程语言 > Java开发

使用JAVA直观感受快速排序与冒泡排序的性能差异

2016-01-08 22:56 501 查看
初学算法,肯定会编写排序算法

其中两个最为有名的就是冒泡排序和快速排序

理论上冒泡排序的时间复杂度为O(N^2),快速排序的时间复杂度为O(NlogN)

下面本门使用JAVA,分别编写三段排序程序

对十万个0-9999的整数进行一次冒泡排序

对十万个0-9999的整数进行1000次快速排序,使用递归完成

对十万个0-9999的整数进行1000次快速排序,使用堆栈完成

对十万个0-9999的整数进行一次冒泡排序:

执行结果:



下面是使用递归方法的快速排序:

执行结果:



最后一段程序是使用数据结构栈来实现的非递归快速排序算法:

执行结果:



综上所述,可以直观的看出来

复杂度为O(N^2)的冒泡排序速度相当慢,一次排序就要18秒,而复杂度为O(NlogN)的快速排序基本上20毫秒内就搞定,这就是算法的力量啊。

递归函数在这里并不会影响性能,直观,简洁的递归算法是相当实用的,除非动态规划算法一定要将递归转变成循环,否则大多数情况下并不需要改变递归方法,而非递归算法因为会引入其他数据结构,有可能导致程序还会稍稍有些额外开支。

本文来自:http://www.hexcode.cn/article/4090/show
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: