任成风
2020年6月24日星期三
《啊哈算法》描述的快速排序算法,真让人怀疑以前的快速排序算法是不是真的学糊涂了。
百度了一下“java快速排序”,出来的一堆博客,和《啊哈算法》的同出一路,我的疑惑没有得到解答,不免有点失望。
自古评论区出人才,有意思的来了,我一看这几篇博客的评论区,果然是一片哀嚎,看来困惑的不只是我一个呀。
于是,我只好翻箱倒柜的找我以前上课记的笔记,看完用java描述了一下以前的算法。姑且就以老师讲的为准,以我过去学的为准吧。
1、快速排序思想
快速排序的核心是分割,确定一个用作分割的基准数字,将原数组分割成两个部分,左边的比基准数字小,右边的比基准数字大。
然后递归迭代,分别将左部和右部的两个部分进行快速排序,知道整个数组有序。
2、时间复杂度
平均时间复杂度为O(N*logN)数组无序时表现较为好
最坏时间复杂度为O(N^2)数组有序且为逆序的时候最坏
3、java代码实现
public class QuickSort {
|