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




阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 竹炭皂洗脸好吗 竹炭包的价格 竹炭代理 竹炭报价 环保竹炭 竹炭多少钱 竹炭包汽车用 竹炭一洗白有用吗 竹炭去甲醛有用吗 竹炭板材 竹炭手工精油皂 竹炭包哪个品牌好 竹炭包哪里买 竹炭空气净化包 竹炭净白手工精油皂 竹炭面料 竹炭染发剂什么牌子好 竹炭纤维面料 紫竹园竹炭一梳黑黑发霜 竹炭生意 烧烤竹炭批发 竹炭牙刷厂家批发 竹炭能除甲醛吗 竹炭皂多少钱 竹炭花生厂家 蜂胶竹炭皂 西窗竹by十九瑶 西窗竹by拉面要加香菜 西窗竹全文免费阅读 松窗竹户 我做皇帝那些年 小竹窗 竹竿舞 竹竿 跳竹竿 竹竿的拼音 红背竹竿草 竹竿赶鸭子 竹竿舞教学 竹竿舞教案 竹竿巷 竹竿批发