冒泡排序是一种简单的排序算法,它通过重复地交换相邻的元素,直到整个序列按照升序或降序排列。它的工作原理如下:
- 比较相邻的两个元素。如果前一个元素大于后一个元素,就交换它们的位置。
- 对整个序列重复步骤1,直到没有任何一对相邻元素需要交换,也就是说序列已经按照升序排列完成。
具体过程如下:
- 从第一个元素开始,比较相邻的两个元素。如果第一个元素大于第二个元素,就交换它们的位置。
- 对剩余的元素重复步骤1,直到最后一个元素。
- 重复步骤1-2,直到整个序列按照升序排列完成。
附冒泡排序代码实现:
#时间复杂度:O(n**2) def bubble_sort(li): for i in range(len(li)-1): #第i趟 flag = False #巧妙思路 判断第i趟过去之后是否有数的交换 减少不必要的循环 for j in range(len(li)-i-1): #箭头指第几个数 if li[j]>li[j+1]: li[j],li[j+1]=li[j+1],li[j] flag = True #如果进行了交换 则标志改变 print(li) if not flag: #如果白白走了一趟 说明已经排好 没必要继续循环下去 可以直接停止 return #停止循环 减低时间复杂度 li=[3,2,5,6,8,7,4,9,1] bubble_sort(li)
冒泡排序的时间复杂度为O(n^2),因为它需要进行n-1轮比较和交换操作。虽然它是一种简单的排序算法,但在某些情况下效率较低,因此在实际应用中通常会使用更高效的排序算法,如快速排序、归并排序等。