用户:
T_MKT小艺查看:3 回复:1 评论:3 创建时间:2021-08-19T21:28:15
【作品展示】

【作品介绍】
计算机常用排序方法——归并排序优点:速度快
缺点:代码多,稍不注意容易报错
【作品源代码】
def MergeSort_merge(l1, l2):
l3 = []
while True:
i = 0
while True:
if l1[0] > l2[i]:
l3.append(l2[i])
i += 1
if i == len(l2):
# 一个列表无项目,把另一个全部填下去
break
else:
break
l3.append(l1[0])
del l1[0]
for j in range(0, i, 1):
del l2[j]
if len(l1) == 0:
for j in range(0, len(l2), 1):
# 一个列表无项目,把另一个全部填下去
l3.append(l2[j])
return l3
if len(l2) == 0:
for j in range(0, len(l1), 1):
# 一个列表无项目,把另一个全部填下去
l3.append(l1[j])
return l3
def MergeSort(lists, order):
if len(lists) <= 1:
return lists
# 分割
a=[]
for i in range(0, len(lists), 2):
try:
b = [lists[i], lists[i+1]]
# 如果顺序则交换
if b[0] > b[1]:
b[0], b[1] = b[1], b[0]
except IndexError:
# 奇数项列表的最后一项单独成列表
b = [lists[i]]
a.append(b)
# end 分割
# 组合
while len(a) != 1:
a[0] = MergeSort_merge(a[0], a[1])
del a[1]
# 排序后的列表实际上是“b”的第 0 项
a = a[0]
# 如果输入反序则倒过来
if order == 1:
b = []
for i in range(1, len(a) + 1, 1):
b.append(a[len(a) - i])
else:
b = a
return b
print('输入数据,结束按英文分号')
while True:
data=[]
while True:
a = input()
if a == ';':
b = int(input('输入0正序,输入1反序'))
# 按分号结束,开始计算
break
else:
try:
a0 = float(a)
except ValueError:
# 筛掉非数字
print('请输入整数或小数')
else:
# 可化简的小数化简
if str(a0)[(len(str(a0))-2):] == '.0':
a0 = int(a0)
data.append(a0)
c = input('按0继续,按1退出')
if c == 1:
# 退出后结束
print(end=None)
else:
# 删除,下一轮重新定义
del data
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn
T_MKT小艺相比之下,[1,3,2,5,6,8,7,4]
用冒泡排序平均需要 0.010572 秒,
用归并排序仅仅需要 0.0045462 秒!
整整快了 0.0060258 秒!
点赞0
评论