前言
排序算法网上看一大把,今天试试牛刀,比较下快速排序和冒泡排序
#快速排序
"""
对于一串序列,首先从中选取一个数,凡是小于这个数的值就被放在左边一摞,
凡是大于这个数的值就被放在右边一摞。然后,继续对左右两摞进行快速排序。
直到进行快速排序的序列长度小于 2 (即序列中只有一个值或者空值)
"""
def quick_sort(lis):
if len(lis)<2:
return lis
else:
base=lis[0]
left=[i for i in lis[1:] if i <base]
right=[j for j in lis[1:] if j>base]
return quick_sort(left)+[base]+quick_sort(right)
#冒泡排序
def bouble_sort(lis):
"""
从左向右,两两比较,如果左边元素大于右边,就交换两个元素的位置。
:param lis:
:return:
"""
i=j=0
leng=len(lis)-1
flag = 1
while i<leng:
j=0
while j<leng -1:
if lis[j]>lis[j+1]:
lis[j],lis[j+1]=lis[j+1],lis[j]
flag = 0
j+=1
if flag:
break
i+=1
return lis
##调式
if __name__=="__main__":
lis=[3,2,1,4,6,7,8]
print(quick_sort(lis))
print( bouble_sort(lis))