【BigHereo 48】---DataStructure---查找(六)

来源:互联网 发布:上海java培训哪家好 编辑:程序博客网 时间:2024/06/05 21:13



DataStructure---查找(六)

 

 


一,【前言】

  

   数据结构中,我们之前通过宏观学习基本的数据结构: 队列, 树, 图,从今天开始, 我们将开始学习对数据结构进行的操作: 查找. 其中查找分为静态查找和动态查找, 下面我们就通过几个简单的问题开始了解一下对数据结构的操作;


   1,对数据结构的操作有静态和动态, 分别是那些?


   2, 二分查找的前提是是什么?


   3,索引顺序表的查找是怎么查找的?


   4,二分, 索引, 顺序等,平均查找长度最好的是哪个?


   5,怎么构造平衡二叉树?


 



 

 

二,【详情】


   1,对数据结构的操作有静态和动态, 分别是那些?

解答:   静态的有: 读操作,也即查;  动态的有插入和删除操作.


 

   2, 二分查找的前提是是什么?

解答: 二分查找前提是所有的记录数据必须是有序的, 且顺序存储在内存中


 

   3,索引顺序表的查找是怎么查找的?

解答:索引查找也叫分块查找, 包含索引表和顺序表, 现在索引表中确定查找范围,再去顺序表中查.

      


   4,二分, 索引, 顺序等,平均查找长度最好的是哪个?

解答:  最好的是二分查找

 



   5,怎么构造平衡二叉树?

 



   6,顺序表查找平均长度是多少?

解答: 查找长的ASL: (n+1)/2


 

   7,顺序表查找的代码怎么写?

int SearchSqTable(SqTable T, KeyTypekey){  T.eleme[0].key=key;//设立岗哨   i=T.n; while(T.elem[i].key !=key) i--; return i;} 


   8,二分查找的平均长度怎么计算?

解答: 平均查找长度ASL: (n+1)/n log2(n+1)-1

 

   9,二分查找平均查找长度代码怎么表示?

intSearchBin(SqTable T,KeyType key){   int low, high; low=1; high=T.n; //第0个为岗哨   while(low <=high)     {        mid=(low+high)/2;        if(key==T.elem[mid].key)  return mid;            else if(key<T.elem[mid].key)high=mid-1;                       else low=mid + 1;       }         return 0;}


 

  10.什么是二叉排序树?

解答: 概念

         (1)小于根; 根小于右; 所有的子树满足前两条--似中序, 键值升

         (2子节点高度差绝对值小于等于 1---平衡二叉树

 

  11, 用代码怎么进行二叉树的遍历?

解答: 写代码前, 必须先宏观的理解要写的逻辑, 这里的逻辑怎么写呢?

           


接下来代码就相当的容易了:

 

typedef struct btnode{  keyType key;  struct btnode *lchild; *rchild;}BSTNode, *BinTree; BinTree bst;BinTreeSearchBST(BiTree bst, keyType key) {   if(bst==null) return null;     else if(key==best->key) return bst;        else if(key< bst->key) returnSearchBST(bst->lchild. key)        else return SearchBST(bst->rchild, key);} 


 12,二叉排序树平均查找长度怎么算?

解答: 平均查找长度O(log2n)---二叉树

 

  13,什么是平衡二叉树?

解答: 概念

         (1)首先这是二叉树

         (2)每子节点高度差绝对值小于等于 1

 

 

  14,散列表的目的是什么?

解答: 目的

         (1)如何构造"均匀的"散列函数?

         (2)用什么法有效解决冲突?

 

  15,如何构造”均匀的”散列函数?     

      


  16,用什么方法能有效解决冲突呢?

         

 

 

三,【小结】                                          

  

     通过这一博文的总结, 知道了对数据结构操作的查找, 有静态查找和动态查找, 其中静态查找又有顺序表,二分查找和索引表的查找; 动态查找中有二叉排序树, 平衡二叉树和散列表的查找. 这些讲的都是对数据结构操作的一个, 还有一个操作是什么呢?  另一个对数据结构的操作就是 排序, 下一博文中, 我将对排序进行总结,敬请期待.