各种算法的性能和适用范围
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语言描述》
相关文章推荐
- Codeforces Round #356 (Div. 2) Bear and Square Grid
- 343IntegerBreak
- [线性常微分方程][8]The Forced Harmonic Oscillator
- mysql查看表结构
- 【Android】Activity入门
- 1.COM基础概念
- mysql xtrabackup 备份恢复实现,mysql命令备份数据库,打包压缩数据库
- 朱子家训
- Java程序员必须掌握的8大排序算法
- SSL/TLS 协议简介与实例分析
- Eclipse导入git上的maven web项目 部署
- Android View 测量参数
- 数字,日期,时间
- K Reversed Words
- Celery教程-------------以守护进程方式运行worker
- TobHost详解
- BZOJ_2179_FFT快速傅立叶_(FFT)
- 七月算法深度学习笔记6--CNN推展案例:图像检测、NeuralStyle
- A package manager for Qt
- <OJ_Sicily>Prime Palindromes