• 这部分查找用的是哈希表吗?


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 2301_77052782 2024-06-20 17:23 采纳率: 0% 浏览 2 首页/ 编程语言 / 这部分查找用的是哈希表吗? c++ 请问如图的查询部分用的是哈希表吗?如果不是的话需要怎么改呢? 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    1条回答 默认 最新

    • 码农阿豪 Java领域优质创作者 2024-06-20 17:32
      关注
      让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
      根据图中的查询部分,不太可能使用哈希表实现。因为哈希表的主要优势在于快速的插入和查找,但是通过图中的查询部分中的输入条件来看,其中包含了一个区间查询,这种查询方式不太适用哈希表。 如果需要改进查询部分,可以考虑使用其他数据结构。常见的数据结构有BST(二叉搜索树)、AVL树、红黑树、B-树等等。这些数据结构都可以支持区间查询操作,并且查询的时间复杂度也较低。 例如,可以使用红黑树,对每个数进行插入操作,查询时,按照左右区间边界进行查找。代码示例:
      import java.util.*;
      class Node {
          int val;
          Node left, right;
          public Node(int val) {
              this.val = val;
          }
      }
      public class IntervalTree {
          private Node root;
          public void insert(int val) {
              root = insert(root, val);
          }
          private Node insert(Node root, int val) {
              if (root == null) {
                  return new Node(val);
              }
              if (val <= root.val) {
                  root.left = insert(root.left, val);
              } else {
                  root.right = insert(root.right, val);
              }
              return root;
          }
          public List search(int left, int right) {
              List result = new ArrayList<>();
              search(root, left, right, result);
              return result;
          }
          private void search(Node root, int left, int right, List result) {
              if (root == null) {
                  return;
              }
              if (root.val >= left && root.val <= right) {
                  result.add(root.val);
              }
              if (root.val > left) {
                  search(root.left, left, right, result);
              }
              if (root.val < right) {
                  search(root.right, left, right, result);
              }
          }
          public static void main(String[] args) {
              IntervalTree tree = new IntervalTree();
              tree.insert(3);
              tree.insert(5);
              tree.insert(7);
              tree.insert(1);
              tree.insert(10);
              List result = tree.search(4, 9);
              System.out.println(result); //[5, 7]
          }
      }
      

      上面的代码示例使用了红黑树来实现。可以看到,insert方法用于将每个数插入到红黑树中,search方法用于查找指定区间内的数据。最后通过调用search方法,查找[4,9]区间内的数据,返回的结果为[5,7]。

      展开全部

      评论
      编辑
      预览

      报告相同问题?

    • 相关阅读:
      8.前端笔记-CSS-背景设置
      密码学系列1-安全规约
      [网络工程师]-应用层协议-DHCP
      Ubuntu22.04本地部署PaddleSpeech实验代码(GPU版)
      畅玩《七雄争霸》经典战国策略游戏
      Qt/C++音视频开发53-本地摄像头推流/桌面推流/文件推流/监控推流等
      项目经理退退退,PMO才真的是项目管理“工具人”
      简单理解《Effective Java》推荐准则
      04贪心:最大子序和
      【1++的数据结构】之哈希(二)
    • 原文地址:https://ask.csdn.net/questions/8121760