偶然刷到一篇名为《一半人写不出冒泡排序,你的同龄人都躺下了》的文章,其中提到轮子哥毕业去参加面试的时候,第一轮笔试考察冒泡排序,结果现场的一半学生都没写出来。冒泡排序(Bubble Sort),是一种最基础的、最简单直观的交换排序,之所以叫做冒泡排序,是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样。以下为我总结的实现思想和代码,可供参考。
一、冒泡排序的思想
从头开始两两比较,把较大的元素与较小的元素进行交换,每轮把当前最大的一个元素存入到数组当前的末尾。每一趟比较只能确定将一个数归位,如果有 n 个数进行排序,要进行 n-1 趟操作。算法时间复杂度复杂度 O(n)
。
二、冒泡排序的实现步骤
- 定义一个外部循环控制冒泡的轮数(
数组.length-1
) - 定义一个内部循环控制每轮依次往后比较几个位置(
数组.length-i-1
) - 如果当前位置的元素值
>
后一个位置的元素值,两者交换
三、Java 版代码实现
1 | public class BubbleSort { |
四、Python 版代码实现
1 | def bubbleSort(arr): |