十大排序(C++版)--冒泡排序(BubbleSort)
冒泡排序是初学者最常用的算法,也是较为简单的一种算法。在长度为n的数组中其实现原理就是将数组中的数两两进行比较,把较大的值往后放,比较n-1次后整个数组就是有序的了。由于整个过程是将大的数往后放,类似于气泡冒出水面,因此称为冒泡排序。代码如下:
我们有一个这样的数组:[5,3,8,6,9,2,1,4,7]
为了方便看到整个冒泡排序的过程,这里将每步的变化都打印出来


在第一遍循环结束后,9因为是最大的所以被放到了最后一位。因为每次比较之后保证最大的一位被我们放在最后,因此每次比较之后待比较数可以减一,总共比较n-1次。
时间复杂度为O(n^2),空间复杂度为O(1)
优点:算法较为简单且对数量较少的数组排序操作简单,因为每次两两比较大小后执行交换,因此是稳定排序。在最好的情况下(给定数组就是已经有序的)时间复杂度为O(n)。
缺点:在对大量数据的处理上的平均时间复杂度达到了O(n^2),耗费时间较长。