冒泡
def bubble_sort(data_list): ''' 冒泡排序: 首先拿到第一个元素,和第二个作比较,把较大的数放在右边 第二个再和第三个比较。。。。一轮下来,最后一个就是最大的数 再一轮,倒数第二个也变成有序的......最终都变成有序的 ''' for i in range(len(data_list)): flag=True for j in range(len(data_list)-i-1): if data_list[j]>data_list[j+1]: data_list[j],data_list[j+1]=data_list[j+1],data_list[j] flag=False if flag==True: break return data_list
插入
def select_sort(data_list): ''' 选择排序: 不断找到最小的(找最大的也是可以的) 首先拿到第一个,然后发现比它小的,记住下标。循环一轮,找到最小的数的位置 和 最左边的数交换位置 然后从第二个开始....和第二个交换位置, .....开始变得越来越有序 :param data_list: :return: ''' for i in range(len(data_list)): flag=True min_loc=i#假定最小数的下标为i for j in range(i+1,len(data_list)): #如果当前数比假定的小,将该元素标记为最小 if data_list[min_loc]>data_list[j]: min_loc=j flag=False if flag: break #遍历结束时,将最小元素和第一个元素交换 data_list[i],data_list[min_loc]=data_list[min_loc],data_list[i] return data_list
选择
def insert_sort(data_list): ''' 插入排序:有点像抓牌,插牌 手中刚开始有一张牌,一张牌当然是有序的 再把第二张牌拿到手里 和 第一张比较是否需要交换位置,然后手中的两张牌变得有序了 再拿第三张牌,和手中的牌 从右边开始比较 ,如有需要交换位置 ...... 所有的牌都到手里,手里的牌都变成有序的 :param data_list: :return: ''' for i in range(1,len(data_list)): for j in range(0,i): if data_list[i]<data_list[j]: data_list[i],data_list[j]=data_list[j],data_list[i] return data_list