博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
各种排序算法的时间复杂度
阅读量:2353 次
发布时间:2019-05-10

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

各种常用排序算法

类别

排序方法

时间复杂度

空间复杂度

稳定性

复杂性

特点

最好

平均

最坏

辅助存储

 

简单

 

插入

排序

直接插入

O(N)

O(N2)

O(N2)

O(1)

稳定

简单 

 

希尔排序

O(N)

O(N1.3)

O(N2)

O(1)

不稳定

复杂

 

选择

排序

直接选择

O(N)

O(N2)

O(N2)

O(1)

不稳定

 

 

堆排序

O(N*log2N)

O(N*log2N)

O(N*log2N)

O(1)

不稳定

复杂

 

交换

排序

冒泡排序

O(N)

O(N2)

O(N2)

O(1)

稳定

简单

1、冒泡排序是一种用时间换空间的排序方法,n小时好

2、最坏情况是把顺序的排列变成逆序,或者把逆序的数列变成顺序,最差时间复杂度O(N^2)只是表示其操作次数的数量级
3
、最好的情况是数据本来就有序,复杂度为O(n)

快速排序

O(N*log2N)

O(N*log2N) 

O(N2)

O(log2n)~O(n) 

不稳定

复杂

1n大时好,快速排序比较占用内存,内存随n的增大而增大,但却是效率高不稳定的排序算法。

2、划分之后一边是一个,一边是n-1个,
这种极端情况的时间复杂度就是O(N^2)
3
、最好的情况是每次都能均匀的划分序列,O(N*log2N)

归并排序

O(N*log2N) 

O(N*log2N) 

O(N*log2N) 

O(n)

稳定

复杂

1n大时好,归并比较占用内存,内存随n的增大而增大,但却是效率高且稳定的排序算法。

基数排序

O(d(r+n))

O(d(r+n))

O(d(r+n))

O(rd+n)

稳定

复杂

 

注:r代表关键字基数,d代表长度,n代表关键字个数

思考:为什么快速排序的空间复杂度是lg(n)~n,这是因为快速排序是递归的,每个递归深度都会产生一些临时变量,所以它的空间复杂度跟递归深度有关。

转载地址:http://lxwtb.baihongyu.com/

你可能感兴趣的文章
加载图片到内存中
查看>>
图片的镜子效果
查看>>
图片的拷贝
查看>>
图片的旋转
查看>>
图片的颜色变化
查看>>
撕衣服案例
查看>>
触摸事件
查看>>
学生管理系统(LinearLayout)
查看>>
回调方法callback
查看>>
绑定(远程)服务
查看>>
带进度条的多线程断点下载
查看>>
使用开源组件进行断点下载
查看>>
自定义控件和试图(原生api)优酷菜单
查看>>
自定义控件和试图(原生api)viewPager图片轮播广告
查看>>
使用v4包或者其他第三方包的注意事项
查看>>
开关按钮(自定义属性)
查看>>
viewPager原生选项卡
查看>>
打钩显示输入的密码
查看>>
EditText和TextView同步数据
查看>>
RadioGroup组与onCheckedChanged事件
查看>>