1 import random 2 3 4 # 原始冒泡排序 5 def bubble_sort(nums): 6 counter = 0 7 for i in range(len(nums) - 1): # 这个循环负责设置冒泡排序的趟数 8 for j in range(len(nums) - i - 1): # 这个是每趟比较的次数,每次从0开始,底部是已有序 9 if nums[j] > nums[j+1]: 10 nums[j], nums[j+1] = nums[j+1], nums[j] 11 counter += 1 12 print('比较次数:', counter) 13 return nums 14 15 16 # 优化冒泡排序 17 def bubble_sort2(nums): 18 counter = 0 19 for i in range(len(nums) - 1): 20 ex_flag = False # 设置交换标志,如果没有进行交换,说明已排序完成,无需再进行 21 for j in range(len(nums) - 1): 22 if nums[j] > nums[j+1]: 23 nums[j], nums[j+1] = nums[j+1], nums[j] 24 counter += 1 25 ex_flag = True 26 if not ex_flag: 27 break 28 print('比较次数', counter) 29 return nums 30 31 def test_arr(count, limit): 32 arr = [] 33 for i in range(count): 34 arr.append(random.randint(1, limit)) 35 return arr 36 37 38 if __name__ == '__main__': 39 arr = test_arr(100, 100) 40 arr2 = test_arr(100, 100) 41 print('冒泡排序前', arr) 42 arr = bubble_sort(arr) 43 print('冒泡排序后', arr) 44 print('--------------------') 45 print('冒泡排序前', arr2) 46 arr2 = bubble_sort(arr2) 47 print('冒泡排序后', arr2)