冒泡排序 第一轮需要比较n-1次(挑出来最大的数) 第二轮比较n-2次(挑出来第二大的数) … def bubble_sort(our_list): n = len(our_list) lastExchangeIndex = 0 # 记录最后一次交换元素的位置 sortBorder = n-1 # 无序数列的边界 for i in range(n): flag = True # 有序标记 for j in range(0,sortBorder): if our_list[j] >our_list[i]: our_list[j],our_list[j+1] =our_list[j+1],our_list[j] flag = False sortBorder = lastExchangeIndex if flag: break return our_list 选择排序 冒泡排序与选择排序的区别: 冒 泡 排 序 比 较 的 一 定 是 紧 紧 相 邻 的 两 个 元 素 ; 而 选 择 排 序 却不 是 每 次 比 较 紧 邻 的 两 个 元素 def selectsort(arr): n =len(arr) mark = 1 for i in range(n-1): mark = i for j in range(i+1, n): if arr[j] < arr[mark]: mark = j # 如果有比mark更小的数则更新mark值 if mark !=i: # 找到最小元素的下标进行交换 arr[i],arr[mark] = arr[mark],arr[i] return arr