博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 冒泡排序,快排
阅读量:5927 次
发布时间:2019-06-19

本文共 1129 字,大约阅读时间需要 3 分钟。

一、冒泡排序

1.1、冒泡的原理

    1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
    2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
    3. 针对所有的元素重复以上的步骤,除了最后一个。
    4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。   

2.1、冒泡排序的代码实现

def bubble_sort(seq):    count=len(seq)    for i in range(0,count):        for j in range(i+1,count):            if seq[i]>seq[j]:                seq[i],seq[j]=seq[j],seq[i]    return seqseq=[4,5,2,1,6,3]print(bubble_sort(seq))

3.1、冒泡排序的时间复杂度

  1、最好情况:若文件的初始状态是正序的,一趟扫描即可完成排序,这是冒泡排序的最优情况时间复杂度o(n)

  2、最坏情况:若初始文件是反序的的,则冒泡排序需要两层循环,这是最坏情况时间复杂度o(n^2)

  3、平均时间复杂度o(n^2)

二、快排

  2.1 快排原理

   快排是冒泡排序的改进,抽取第一个值作为比较值,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比比较值小,另一部分比比较值大,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以进行,最后将分开的来两部分加比较值合并到一起,完成排序。

  2.2 快排的代码实现 

def quck_sort(seq):    if seq==[]:        return []    else:        pivot=seq[0]        low_list=quck_sort([x for x in seq if x
pivot])#比比较值大的部分递归排序 return low_list+[pivot]+upper_list #将三者进行合并,注意将比较值转换成列表print(quck_sort(seq))

  2.3 快排的时间复杂度

  1、最优情况:比较值刚好将列表分成等分了两部分,时间复杂度o(nlogn)

  2、最坏情况:每次递归比较值都是最小值,导致列表分开不均衡,时间复杂度o(n^2)

  3、平局时间复杂度o(nlogn)

转载于:https://www.cnblogs.com/dushangguzhousuoli/p/11028916.html

你可能感兴趣的文章
C++ 常量折叠
查看>>
jquery插件制作 -- 6.手风琴Panel
查看>>
JS只能输入数字和小数点
查看>>
【HeadFirst 设计模式学习笔记】2 观察者模式
查看>>
IIS7上传出现乱码问题解决
查看>>
thinkphp中连接oracle时封装的方法无法用
查看>>
黑马程序员-JAVA基础-IO流其他类
查看>>
希望转载Oracle体系结构及备份(一)——了解体系结构
查看>>
简单实现TCP下的大文件高效传输
查看>>
oracle系统包——dbms_random用法
查看>>
生成不重复的随机数的方法
查看>>
使用ActivityManager实现进程管理
查看>>
安装包部署项目简述
查看>>
HipHop PHP简介(转)
查看>>
MySQL-LAST_INSERT_ID();使用注意事项
查看>>
【转】【WPF】 WPF 调用API修改窗体风格实现真正的无边框窗体
查看>>
uboot之run_command简单分析
查看>>
[emacs] org-mode的一些小技巧
查看>>
Android UI(一)Layout 背景局部Shape圆角设计
查看>>
jqueryMobile 动态添加元素,展示刷新视图方法
查看>>