各种排序算法原理请看
归并排序如下
class MySort:
def merge(self, list1, list2):
"""
归并排序中的单步操作
:param list1:
:param list2:
:return:
"""
res = []
# 当两个列表都不为空时,进行排序操作
if not list1:
return list2
elif not list2:
return list1
else:
l1 = len(list1)
l2 = len(list2)
i = 0
j = 0
while i < l1 and j < l2:
if list1[i] <= list2[j]:
res.append(list1[i])
i += 1
else:
res.append(list2[j])
j += 1
# 当一个列表排序结束时,将另一个列表元素尽数输出
if i == l1:
for lis in list2[j:]:
res.append(lis)
if j == l2:
for lis in list1[i:]:
res.append(lis)
return res
def merge_sort(self, list1):
"""
使用归并排序将列表排序———整体操作
:param list1: 需要排序的列表
:return res:排序结束的列表
"""
if len(list1) <= 1:
return list1
mid = len(list1) // 2
left = self.merge_sort(list1[:mid])
right = self.merge_sort(list1[mid:])
return self.merge(left, right)
if __name__ == '__main__':
text = [1, 3, 2, 5, 8, 6, 7, 9, 3]
s = MySort()
print(s.merge_sort(text))
结果:[1, 2, 3, 3, 5, 6, 7, 8, 9]
未完待续(也可能完了)