冒泡排序
基本冒泡排序
''' 冒泡排序 比较列表相邻的两个元素,前面>后面,交换位置,一趟比较后,无序列表个数减1,有序列表个数+1 复杂度 O(N^2) ''' import random def bubble_sort(list): for i in range(len(list) - 1): for j in range(len(list) - i - 1): if list[j] > list[j + 1]: list[j], list[j + 1] = list[j + 1], list[j]
优化版冒泡排序
''' 对于冒泡排序有一个地方可以优化,当一趟元素没有进行交换位置:表明当前片段是有序列表 ''' def bubble_sort_plus(list): for i in range(len(list) - 1): ifOk = True #定义每一趟都要验证 for j in range(len(list) - i - 1): if list[j] > list[j + 1]: list[j], list[j + 1] = list[j + 1], list[j] ifOk = False #交换位置表示需要进行交换位置了 if ifOk:#没交换位置表示已经是有序了 return
验证
nums = [random.randint(0, 5000) for i in range(1000)] print(nums) #bubble_sort(nums) bubble_sort_plus(nums) print(nums)