算法方面面试题及个人解答
2016-05-24 18:44
417 查看
1、说说常见的排序算法时间复杂度
1、O(n^2) : 冒泡、直接插入(最好O(n))、简单选择排序2、O(n*logn):快排(最坏:O(n*n))、归并、堆排序
3、O(d * n): 基数排序
4、根据增量函数:希尔排序
2、说说常见排序算法的优缺点
1、简单排序算法: 它们在时间复杂度上表现不是很好,但简单排序算法都是稳定的,其次,在n值比较小的情况下简单排序算法和其它高级算法的时间差距可以接受,而且所有的简单排序算法空间复杂度为O(1)。
2、快速排序:是冒泡排序的改进形式,所以在数据基本有序时,会退化成冒泡排序,但从平均时间性能而言,快速排序 的性能最好,快速排序适用于数据量大且数据分布随机的情况。快排不是稳定的排序算法。
3、归并排序:算法稳定,且在平均情况下和最坏情况下都能保证n*log n 的时间复杂度。但是其需要的辅助空间多。
4、堆排序: 算法不稳定,能保证n *b log n 的复杂度,且只辅助空间使用不多,但是算法比较复杂。
5、希尔排序:算法不稳定,时间上表现很好。
6、基数排序:可根据多个关键字排序。
相关文章推荐
- 一个关于if else容易迷惑的问题
- JavaScript演示排序算法
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 一道sql面试题附答案
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- C# 超高面试题收集整理
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- 算法之排序算法的算法思想和使用场景总结
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法