''' 冒泡排序原理:比较列表中相邻的两个元素大小,如果第2个元素比第1个元素大,就交换它俩的位置,从列表的开始到结尾, 依次对每一组相邻的2个元素都进行比较,这样最大的元素就排到了最前面,第一轮排序结束。 继续循环上面步骤,一直到只剩下一个元素没有排序为止,排序结束 例如数组:{38,65,97,76,13,27,49},具体排序过程如下: 第1轮排序:97 [65 76 38 27 49 13] 第2轮排序:97 76 [65 38 27 49 13] 第3轮排序:97 76 65 [38 27 49 13] 第4轮排序:97 76 65 49 [38 27 13] 第5轮排序:97 76 65 49 38 [27 13] 第6轮排序:97 76 65 49 38 27 [13] ''' #实现代码 def bubble_sort(arrays): for i in range(len(arrays)-1): for j in range(len(arrays)-i-1): if arrays[j]<arrays[j+1]: arrays[j],arrays[j+1]=arrays[j+1],arrays[j] return arrays if __name__ == '__main__': arrays = [38, 65, 97, 76, 13, 27, 49] print("排序前:" + str(arrays)) print("排序后:" + str(bubble_sort(arrays)))
看一下执行结果:
时间复杂度:
冒泡排序中需要进行 n-1 轮“冒泡”,每一轮“冒泡”需要进行 n-i 次比较和交换操作,
i 的平均值为 n/2,时间复杂度为 T(n)=n(n-1)/2,再乘每次操作的步骤数,所以冒泡排序的时间复杂度为 O(n^2)
空间复杂度:O(1)
欢迎大家关注我的微信公众号