知识点总结

折半查找
最坏查找长度为[log2n]+1,复杂度O(log2n)


int Search_Bin(SSTable ST,  
                      KeyType key){
  low=1; high=ST.length; 
  while (low <= high) {
     mid = (low + high) / 2;
     if (key=ST.elem[mid].key)
          return  mid;        
     else if(key<ST.elem[mid].key)
           high=mid-1; 
     else 
           low = mid + 1;
  }
   return 0;
}
分块查找
对数据进行分块,使得块内无序、块间有序。将各块中的最大关键字构成
一个索引表,表中还要包含每块的起始地址。
分块查找过程
① 对索引表用折半查找定位最后一个小于等于key的块
② 确定了待查关键字所在的块后,块内采用顺序查找
优缺点
优点:删除或者插入相对容易,移动记录量变小。
缺点:要增加一个索引表的存储空间并对初始索引表进行排序运算。
适用情况:如果线性表既要快速查找又“经常”动态变化,则可采用分块
查找


二叉排序树
二叉排序树或是空树,或是满足如下性质的二叉树:
 (1)若其左子树非空,则左子树上所有结点的值均小于根结点的值;
 (2)若其右子树非空,则右子树上所有结点的值均大于等于根结点的值;
 (3)其左右子树本身又各是一棵二叉排序树
操作
若为空,则返回NULL;
不空时:
  若查找的关键字等于根结点,返回T
  否则
   若小于根,查其左子树,返回左子树中的查找结果
   若大于根,查其右子树,返回右子树中的查找结果
BSTree SearchBST(BSTree T,KeyType key) {
     if((!T) return NULL;
     else {
         if(key==T->data.key) return T;        
         else if (key<T->data.key)  
             return SearchBST(T->lchild,key);
         else return SearchBST(T->rchild,key);    
      }
} // SearchBST


哈希查找
1.根据设定的哈希函数和处理冲突的方法,将一组关键字映象到一组有限的
连续的存储空间上,以关键字对应的Hash函数值作存储地址,如此所得
表称为哈希表。
映像过程称为哈希造表或散列,存储地址称为哈希地址或散列地址。
关键是构造合适的Hash函数和找合适的冲突处理方法
2.对数值型的关键字常见构造方法有:
直接定址法 数字分析法 折叠法 平方取中法 除留取余法 随机数法
3.处理冲突的方法:
开放地址法 再哈希法 链地址法 公共溢出区


内部排序方法总结比较
1.直接插入排序正序时最好时间复杂度O(n),逆序最坏O(n2),平均O(n2),
空间复杂度O(1);稳定;原始序列基本有序时该方法好
2.折半插入排序T(n)=O(n2),原本有序无序均如此,最好O(NLogN),
S(n)=O(1);稳定
3.希尔排序(缩小增量排序):平均时间复杂度O(n1.x),S(n)=O(1);不稳定
4.冒泡排序(改进)正序时间复杂度最好O(n),逆序最坏O(n2),平均O(n2),
S(n)=O(1); 稳定
5.快速排序平均时间复杂度O(nlogn),平均性能最优,正序或逆序最坏
O(n2), 有辅助栈,空间复杂度最坏O(n),平均O(logn);不稳定. 枢轴改进
6.选择排序复杂度T(n)=O(n2),原本有序无序均如此,S(n)=O(1);稳定
7.堆排序T(n)=O(nlogn),S(n)=O(1);不稳定(因为间隔着比和移动)
8.归并排序最好最坏复杂度为O(nlogn),空间复杂度O(n),稳定
9.链式基数排序最好最坏时间复杂度为O(d*(n+ rd )),空间O(rd),稳定
10.内部排序方法分类:复杂度O(n2)的简单排序方法,O(nlogn)的高效
排序方法(比较法的理论下界),O(d*(n+rd))的基数排序方法.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值