您的位置:首页 > 其它

各种算法的性能和适用范围

2016-06-10 17:28 246 查看


一些算法

排序

内部排序和外部排序

根据排序过程中涉及的存储器不同,可以讲排序方法分为两大类:一类是内部排序,指的是待排序的几率存放在内存中进行的排序过程;另一类的外部排序,指的是排序中要对外存储器进行访问的排序过程。

内部排序:

插入排序(直接插入排序)、快速排序、选择排序(简单选择排序)、归并排序、冒泡排序、希尔排序、堆排序。

外部排序:

外部排序的过程主要是依据数据的内外存交换和“内部归并”两者结合起来实现的。

外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装入内存的部分分别把每一部分调入内存完成排序。然后,对已经排序的子文件进行归并排序。

排序算法稳定性

假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。

排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。还有就是节省时间。

堆排序、快速排序、希尔排序、直接选择排序不是稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。

插入排序、合并排序、堆排序和快速排序都是比较排序。

插入排序

适用于少量数据的排序,时间复杂度为O(n^2)。

堆排序

时间复杂度为O(N*logN)。

堆排序是就地排序,辅助空间为O(1)。

它是不稳定的排序方法。(排序的稳定性是指如果在排序的序列中,存在前后相同的两个元素的话,排序前 和排序后他们的相对位置不发生变化)

快速排序

时间复杂度 最理想 O(nlogn) 最差时间O(n^2)

基数排序

桶排序

希尔排序

希尔排序是对直接插入排序方法的改进。

近似算法

NP完全性

计算几何学

字符串匹配

有关数论的算法

矩阵运算

0-1原理


一些数据结构

基本数据结构

链表


队列

散列



堆(优先队列)



红黑树

AVL树

伸展树

高级数据结构

B树

B树是主磁盘或其他直接存储辅助存储设备而设计的一种平衡查找树,B树与红黑树类似。但在降低磁盘I/O操作次数方面要更好一些,许多数据库系统使用B树或B树的变形来储存信息。

参考:

《算法导论》

《数据结构与算法分析:C语言描述》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: