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

详解Java八大经典内排序算法——冒泡排序

发布时间:2021-12-31点击数:

      今天我们走近第二个大类【交换排序】中的冒泡排序


冒泡排序
-排序思路



      通过无序区中相邻元素间关键字的比较和位置的交换,使关键字最小的元素如气泡一般逐渐往上“漂浮”直至“水面”。整个算法是从最下面的元素开始,对每两个相邻的关键字进行比较,且使关键字较小的元素换至关键字较大的元素之上,使得经过一趟冒泡排序后,关键字最小的元素到达最上端。接着,再在剩下的元素中找关键字次小的元素,并把它交换到第二个位置上。依次类推,一直到所有元素都有序为止。

微信图片_20230214150138_副本.jpg

▲ 冒泡排序的一趟排序过程

说明:冒泡排序每趟产生的有序区一定是全局有序区,也就是说每趟产生的有序区中所有元素都归位了。





冒泡排序
-排序实例



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


      每次从无序区中冒出一个关键字最小的元素(用方框表示)并将其定位。

微信图片_20230214150142_副本.jpg

▲ 冒泡排序过程



冒泡排序
-排序算法



1_副本.jpg


冒泡排序
-算法分析


    时间复杂度:O(n2);


    空间复杂度:O(1);

    稳定性:稳定;

    复杂性:简单。


冒泡排序
-改进的冒泡排序算法


      在有些情况下,在第 i (i < n-1)趟时就已经排好序了,但算法仍执行后面几趟的比较。实际上,一旦算法中某一趟比较时没有出现任何元素交换,说明已排好序了,就可以结束本算法。为此,改进冒泡排序算法如下:

2_副本.jpg

      今天就分享到这里啦~


     下次我们继续分享【交换排序】中的另一位成员快速排序,记得关注呦~


  • 友情链接

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

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