首页 > 代码库 > 算法之常见的排序算法
算法之常见的排序算法
一、冒泡排序
@run_timedef bubble_sort(data_list): """ 冒泡排序: 首先拿到第一个元素,和它第二个作比较,看是否交换位置 第二个再和第三个比较。。。。一轮下来,最后一个就是最大的数 冒泡都是临近的互相对比找到最大的数据 :param data_list: :return: """ # [6,3,2,7,8,9,5,1,4] # [] for i in range(len(data_list)): flag = True # 做一个标记,看是否在冒泡的过程中发生数据交换 for j in range(len(data_list) - i - 1): # [6,3]做对比,换成[3,6] ,然后 [6,2] 做对比...... 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: # 如果没有发生数据交互,那么数据本身就是排好序的 break
二、选择排序
@run_timedef select_sort(data_list): """ 选择排序: 不断找到最小的(找最大的也是可以的) 首先拿到第一个,然后发现比它大的,记住下标,和最左边边交换位置 都是和最大的数据做对比 :param data_list: :return: """ # [6,3,2,7,8,9,5,1,4] for i in range(len(data_list)): # 做一个标记 flag = True # 当前元素无序区的第一个元素是最小的 min_loc = i for j in range(i + 1, len(data_list)): # 循环遍历无序区 if data_list[j] < data_list[min_loc]: # 如果无序区的元素比假定的小,那将该元素标记为最小的 min_loc = j flag = False # 循环遍历结束,将无序区的最小元素和第一个元素的位置做一下交换 if flag: continue data_list[i], data_list[min_loc] = data_list[min_loc], data_list[i]
三、插入排序
@run_timedef insert_sort(data_list): """ 插入排序:有点像抓牌,插牌 :param data_list: 将数据传递过来 :return: 返回有序的list """ 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]
算法之常见的排序算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。