欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-29 13:30:17
...



DataStructure---查找(六)

 

 


一,【前言】

  

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


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


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


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


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


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


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



 

 

二,【详情】


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

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


 

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

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


 

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

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

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


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

解答:  最好的是二分查找

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



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

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



   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, 用代码怎么进行二叉树的遍历?

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

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


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

 

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,如何构造”均匀的”散列函数?     

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


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

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

 

 

三,【小结】                                          

  

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