各类排序算法优缺点对比
来源:互联网 发布:乐视re软件 编辑:程序博客网 时间:2024/05/17 07:40
1.插入排序
基本思想:
将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。
优点:稳定,快
缺点:比较次数不一定,比较次数越少,插入点后的数据移动越多,特别是当数据总量庞大的时候
2.希尔排序
基本思想:
先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。
优点:快,数据移动少
缺点:不稳定,d的取值是多少,应取多少个不同的值,都无法确切知道,只能凭经验来取
3.简单选择排序
基本思想:
将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。
优点:数据移动次数已知为(n-1)次
缺点:比较次数多
4.冒泡排序
基本思想:
在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
优点:稳定
缺点:慢,每次只能移动相邻两个数据
5.快速排序
基本思想:
1)选择一个基准元素,通常选择第一个元素或者最后一个元素,
2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比 基准元素值小。另一部分记录的 元素值比基准值大。
3)此时基准元素在其排好序后的正确位置
4)然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。
优点:极快,数据移动少.
缺点:不稳定
6.归并排序
归并排序是一种非就地排序,将需要与待排序序列一样多的辅助空间。在使用它对两个己有序的序列归并,将有无比的优势。其时间复杂度无论是在最好情况下还是在最坏情况下均是O(nlog2n)。对数据的有序性不敏感。若数据节点数据量大,那将不适合。但可改造成索引操作,效果将非常出色。
7.简单选择排序
堆排序:由于它在直接选择排序的基础上利用了比较结果形成。效率提高很大。它完成排序的总比较次数为O(nlog2n)。它是对数据的有序性不敏感的一种算法。但堆排序将需要做两个步骤:-是建堆,二是排序(调整堆)。所以一般在小规模的序列中不合适,但对于较大的序列,将表现出优越的性能。
- 各类排序算法优缺点对比
- 各类排序算法性能对比简述
- 各类排序算法的对比及实现
- 各类排序算法的对比及实现
- 各大排序算法优缺点对比
- 各类算法的优缺点
- 各类排序算法时间复杂度和空间复杂度对比表
- 各类排序算法时间复杂度和空间度对比
- 各类排序算法
- 各类排序算法总结
- 各类排序算法
- 各类排序算法
- 各类排序算法
- 各类排序算法总结
- 各类排序算法
- 各类排序算法集合
- 各类排序算法
- 各类排序算法
- 去掉图片超级链接上的虚线框
- unrar命令
- Meta 标签使用详解
- Request中getContextPath、getServletPath、getRequestURI、request.getRealPath的区别
- android中getSystemService详解
- 各类排序算法优缺点对比
- java调用mysql命令 导入导出数据库
- Hibernate批量删除出现sql异常Connection is read-only. Queries leading ... are not allowed
- SQL注入攻击演示代码
- 使用jQuery动态绑定事件插件livequery弥补live的不足
- 安卓textview代码换行
- 网络编程_UDP协议发送数据
- 多选本地相册中的图片并展示(仿QQ空间动态发送页面)上传至服务器
- 使用Implementors插件方便的定位到某个接口的实现类