1、快速排序
def kuaisu(n):
while len(n)<2:
return n
list1=[]
list2=[]
middle=n.pop(0)
for i in n:
if middle>i:
list1.append(i)
else:
list2.append(i)
return kuaisu(list1)+[middle]+kuaisu(list2)
if __name__ == '__main__':
import random
list=[]
for i in range(9):
list.append(random.randint(0,60))
print(list)
print(kuaisu(list))
结果:
[5, 12, 55, 25, 30, 43, 29, 16, 1]
[1, 5, 12, 16, 25, 29, 30, 43, 55]
2.1、归并排序1
def merge(a, b):
c = []
h = j = 0
while j < len(a) and h < len(b):
if a[j] < b[h]:
c.append(a[j])
j += 1
else:
c.append(b[h])
h += 1
if j == len(a):
for i in b[h:]:
c.append(i)
else:
for i in a[j:]:
c.append(i)
#print(c,'!!!!')
return c
def merge_sort(lists):
if len(lists) <2:
#print(lists,'****')
return lists
middle = len(lists)//2
left = merge_sort(lists[:middle])
right = merge_sort(lists[middle:])
#print(left,right,'&&&&')
return merge(left, right)
if __name__ == '__main__':
import random
lists = []
for i in range(9):
lists.append(random.randint(0, 60))
print(lists)
print(merge_sort(lists))
2.2、归并排序2
#归并排序
def merge_sort(alist):
n=len(alist)
if n<=1: #如果只有一个元素的话就不能再往下拆分了,直接返回
return alist #不断归并到最后一个