Python(8) python中的冒泡排序、快速排序
来源:互联网 发布:u盘在mac上无文件 编辑:程序博客网 时间:2024/06/05 09:43
'''冒泡排序的概念:取出列表中的当前值与下一个值进行比较,比较完成后,向列表的最后方或最前方浮动(一次浮动一个位置)外层for循环->控制列表中余下比较元素的个数内层for循环->控制当前循环比较的元素'''#冒泡排序def maoPao(infos): for i in range(len(infos) - 1): for j in range(len(infos) - 1 - i): if infos[j] > infos[j+1]: infos[j],infos[j+1] = infos[j+1],infos[j] return infos#列表lists使用冒泡从小到大排序lists = [33,12,8,88,10,6,5,18]res = maoPao(lists)print(res)'''快排的概念:取出需要排序的列表中的第一个(下面案例为取出第一个)或者最后一个元素,作为参照元素使用for循环,拿列表中第[1:last](第二个到最后一个元素)依次和列表的第一个元素进行比较如果for循环的当前元素比第一个元素大,则定义一个max列表,并把当前元素加入其中如果for循环的当前元素比第一个元素小,则定义一个min列表,并把当前元素加入其中若返回从小到大的排序,则使用 |min + 第一个值(列表中的比较元素)+ max| 返回注意返回列表中的min和max列表,应使用递归函数,再次调用当前排序函数最后在排序函数逻辑开始的地方判断传入的列表(需要排序的列表)长度是否<=1(小于等于1)如果满足<=1则返回正在递归中的传入列表'''#快速排序(快排)#普通写法def quick(infos): if len(infos) <= 1: return infos mins = [] maxs = [] for v in infos[1:]: if v > infos[0]: maxs.append(v) elif v < infos[0]: mins.append(v) return quick(mins) + infos[0:1] + quick(maxs)#注意!这里如果用info[0]取值,取出的时列表中的int值。所以return拼接的列表时,应用infos[0:1]取值,这样取出的是一个内含一个元素的列表,返回拼接列表的时候就不会报错了!lists = [33,12,8,88,10,6,5,18]res = quick(lists)print(res)#list推导式写法def quick_tds(infos): if len(infos) <= 1: return infos return quick_tds([v for v in infos[1:] if v<infos[0]] + infos[0:1]) + quick_tds([v for v in infos[1:] if v>infos[0]])lists = [33,12,8,88,10,6,5,18]res = quick_tds(lists)print(res)
友情提示:
Python学习交流、资源共享群:563626388 QQ
阅读全文