您现在所在位置: 首页 > IT知识库

详解Java八大经典内排序算法——快速排序

发布时间:2022-01-07点击数:

今天我们走进第二个大类【交换排序】中的快速排序~

快速排序
-排序思路
在待排序的 n 个元素中任取一个元素(通常取第一个元素)作为基准,把该元素放入适当的位置后,数据序列被此元素分成两部分,所有关键字比该元素关键字小的元素放置在前一部分,所有关键字比该元素关键字大的元素放置在后一部分,并把该元素排在这两部分的中间(称该元素归位),这个过程称做一趟快速排序,之后对所有划分出来的两部分分别重复上述过程,直至每部分内只有一个元素或为空为止。
▲ 快速排序的一趟排序过程
说明:快速排序每趟仅将一个元素归位。
快速排序
-排序实例

待排序的表有 10 个元素,其关键字为 {6,8,7,9,0,1,3,2,4,5}。以下为快速排序的排序过程:

其排序过程如图 3.4 所示(最后结果图(g)称为快速排序递归树)。第 1 趟是以 6 为基准将整个区间分为(5,4,2,3,0,1)和(9,7,8)两个子区间,并将 6 归位;对于每个子区间,又进行同样的排序,直到该子区间只有一个元素或不存在元素为止。

微信图片_20230214155106_副本.jpg

▲ 快速排序过程
快速排序
-排序算法

5_副本.jpg

快速排序
-算法分析

    时间复杂度:O(nlog2n);

    空间复杂度:O(log2n)
    稳定性:不稳定;
    复杂性:较复杂。

图片

今天就分享到这里啦~


  • 友情链接

关注东软睿道公众号了解更多IT行业资讯

添加东小萌微信
获取更多IT学习资源