zoukankan      html  css  js  c++  java
  • DS博客作业07--查找

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

    1.思维导图

    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代码截图(注意,截图,截图,截图。不要粘贴博客上。)

    2.1.3本题PTA提交列表说明。

    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代码截图(注意,截图,截图,截图。不要粘贴博客上。)

    2.2.3本题PTA提交列表说明。

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

    3.1 题目

    写一个函数,实现一个整形有序数组的二分查找
    

    3.2 做法解析

    二分查找的思路就是折半查找,要有左边界与右边界,我们才能确定中间元素,当左边界与右边界重合的时候,这时查找对象就变为一个元素,若它不是要查找的元素,那么所查找的元素便不再数组中。这样我们就清楚地定义出所需参数,以及退出条件。
    
    我们需要一个左边界,一个右边界,还有中间元素,若左边界大于右边界,退出循环。若找到,则返回元素所在下标。
    

    3.3 代码截图

    3.4 学习体会

    
    
  • 相关阅读:
    Python合集之面向对象(六)
    Python合集之面向对象(五)
    Python合集之面向对象(四)
    Python合集之面向对象(三)
    Python合集之面向对象(二)
    Python合集之面向对象(一)
    Windows中杀死占用某个端口的进程
    docker mysql 中文乱码问题
    springboot 整合 mybatis
    elasticsearch 学习
  • 原文地址:https://www.cnblogs.com/2084624983yue/p/11032295.html
Copyright © 2011-2022 走看看