DS博客作业07--查找

1.本周学习总结(0--2分)

1.思维导图

1476709-20190625025721769-605784486.png

2.谈谈你对查找运算的认识及学习体会。
  这两周学习的章节是查找,查找算法在上个学期和之前的章节的时候学过一些,比如顺序查找和折半查找。这些是比较简单的查找算法。本章学习了一些很难的查找算法。
  本章介绍了三类查找,分别是线性表查找,树表查找和哈希表查找。线性表查找是比较简单的一类,本章学习了顺序查找,折半查找和分块查找这三种在线性表上进行查找的方法。其中折半查找的效率是这三种里面效率最高的方法。树表查找能对动态查找表进行高效率的查找。哈希表的查找需要构造哈希函数,使哈希冲突的可能性尽可能地小。
  在学习查找的时候基本都是只搞懂了算法的原理而忽视了代码,所以导致课堂派的作业会写而pta上的题目不会写,所以应该要加强对代码的了解。

2.PTA实验作业(6分)

2.1.题目1:6-1 二叉搜索树的操作集 (30 分)
本题要求实现给定二叉搜索树的5种常用操作。
2.1.1设计思路(伪代码)
BinTree Insert( BinTree BST, ElementType x )
{
    插入操作 
}
BinTree Delete(BinTree BST,ElementType X) 
{ 
   if树空,直接输出"Not Found“ 
   else 找到要删除的X对应结点位置 
      if X<当前结点 递归调用 Delete(BST->Right,X) 
      if X>当前结点 递归调用 Delete(BST->Left,X) 
      else if X=当前结点 判断当前结点左右孩子是否为空 
          if 左右孩子不空 调用函数FindMin(BST->Right) tmp->Data=BST->Data 保存数据 BST树的右孩子置为结点 保证二叉搜索树的有序性 
          else if if左孩子为空, 右孩子置为结点 
          if右孩子为空,右孩子置为结点 
    return BST
}
Position Find( BinTree BST, ElementType x )
{
    if树空 return NULL
    if当前结点=x return BST
    else if x<当前结点   return Find(BST->Left,x)
    else if x>当前结点   return Find(BST->Right,x)
    return BST 
}
2.1.2代码截图(注意,截图,截图,截图。不要粘贴博客上。)

1476709-20190625031729650-982061061.png

1476709-20190625031801581-417041162.png

2.1.3本题PTA提交列表说明。

1476709-20190625031852500-1665765655.png

2.2 题目2:6-2 是否二叉搜索树 (25 分)
本题要求实现函数,判断给定二叉树是否二叉搜索树。
2.2.1设计思路(伪代码)
bool IsBST ( BinTree T )
{ 
  if T为空 或 !T->Left&&!T->Right then 返回true
  else
  {
    if T->Left 
    {
      TLeft = T->Left;
      while TLeft->Right then  找该点左子树最大值
    } 
    if T->Right
    {
      TRight = T->Right;
      hile TRight->Left then  找该点右子树最大值
    } 
    return (T->Left?(T->Data>TLeft->Data):1)&&(T->Right?(T->Data<TRight->Data):1)
  } 
} 
2.2.2代码截图(注意,截图,截图,截图。不要粘贴博客上。)

1476709-20190625032240623-1789404101.png

2.2.3本题PTA提交列表说明。

1476709-20190625032317170-2122786893.png

3、阅读代码(-2--2分)

3.1 题目
写一个函数,实现一个整形有序数组的二分查找
3.2 做法解析
二分查找的思路就是折半查找,要有左边界与右边界,我们才能确定中间元素,当左边界与右边界重合的时候,这时查找对象就变为一个元素,若它不是要查找的元素,那么所查找的元素便不再数组中。这样我们就清楚地定义出所需参数,以及退出条件。

我们需要一个左边界,一个右边界,还有中间元素,若左边界大于右边界,退出循环。若找到,则返回元素所在下标。
3.3 代码截图

1476709-20190625032743998-978814663.png

3.4 学习体会

转载于:https://www.cnblogs.com/2084624983yue/p/11032295.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值