蒲城网站建设wzjseo,离开此网站系统可能不会保存您做的更改,wordpress就是博客吗,河南网站建设价格与方案目录 一、代码
二、随笔 一、代码 归并排序的主要思路#xff1a;将两个有序的子列表归并为一个有序的大列表
#归并函数#xff0c;假设li是由左右两个有序的子列表组成,假设两个子列表都是从小到大排好序的列表
def merge(li,low,mid,high)::param li: 由左右两个有序的子列…目录 一、代码
二、随笔 一、代码 归并排序的主要思路将两个有序的子列表归并为一个有序的大列表
#归并函数假设li是由左右两个有序的子列表组成,假设两个子列表都是从小到大排好序的列表
def merge(li,low,mid,high)::param li: 由左右两个有序的子列表组成的大列表:param low: 列表的起始索引:param mid: 两个子列表的分解处的索引这里取前面子列表的最后一个元素的索引为mid:param high: 大列表最后一个索引:return: 从小到大排序的列表# 当列表中有两个元素时进行归并操作i low # 第一个子列表的起始索引j mid 1 # 第二个子列表的起始索引比较好了的元素lTmp [] # 用于保存while i mid and j high: # 当两个子列表都没有遍历完时if li[i] li[j]:lTmp.append(li[j])j 1else:lTmp.append(li[i])i 1while i mid:# 当右列表访问结束后直接将左列表进行添加lTmp.append(li[i])i 1while j high:lTmp.append(li[j])j 1li[low:high1] lTmp#归并排序
def mergeSorted(li,low,high)::param li: 列表:param low: 列表起始索引:param high: 列表结束索引:return: if low high: # 保证列表右两个元素mid (low high)//2mergeSorted(li,low,mid) # 对左列表进行排序mergeSorted(li,mid1,high) # 对右列表进行排序merge(li,low,mid,high) # 将排好序的两个列表进行归并if __name__ __main__:import randomli list(range(20)) # 随机生成20个数random.shuffle(li) # 打乱print(li,未排序的列表)print(---------------------------------------)mergeSorted(li,0,len(li)-1)print(li,归并排序后的列表)
[11, 8, 13, 1, 4, 3, 18, 7, 14, 10, 19, 0, 9, 12, 2, 6, 5, 15, 17, 16] 未排序的列表 --------------------------------------- [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 归并排序后的列表
二、随笔