笔试题之数据结构

  • M字符串找N子字符串算法的时间复杂度如何计算?

[时间复杂度]整个算法的执行时间与基本操作重复执行的次数成正比。

参考kmp算法,该算法的时间复杂度为Q(N),通常,模式串的长度n比主串的长度m要小的多

  • 几种排序算法中,哪几个是稳定的?

[稳定排序]排序前后,数值的相对前后位置不变的为稳定排序,否则为不稳定排序。

1、简单排序,时间复杂度O(n的平方),不稳定

2、快速排序,时间复杂度O(nlogn),性能最佳,不稳定

3、堆排序,时间复杂度O(nlogn),不稳定

4、归并排序,时间复杂度O(nlogn),不稳定

5、基数排序,时间复杂度O(d(n+rd)),稳定排序,

  • 平衡二叉树插入新节点后,新的平衡二叉树是什么?

平衡二叉树具有如下性质:

1、左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差不超过1

  • 哈希表的实现方式有哪几种,实现一种hash_insert

哈希函数的构造方法主要有下面六种:

1、直接定址法,即关键字或关键字的某个线性函数值为哈希地址,H(key) = key  或 H(key) = a*key + b;

2、数字分析法,假设关键字是以r为基数的数,并且哈希表中可能出现的关键字事先都知道的,则可取关键字的诺干位组成哈希地址;

3、平方取中法,取关键字平方后的中间几位为哈希地址;

4、折叠法,将关键字分割为位数相同的几部分,然后取这部分的叠加和(舍去进位)作为哈希地址;

5、除留余数法,取关键字被某个不大于哈希表长m的数p除后所得余数为哈希地址,即H(key) = key MOD p ,p <= m;

6、随机数法,选择一个随即函数,取关键字的随即函数值为它的哈希地址。

 

posted @ 2012-10-04 16:35  FoxBabe  阅读(488)  评论(0编辑  收藏  举报