问题列表 - 第19162页

随机二叉搜索树

像treap这样的随机二进制搜索树以高概率提供了良好的性能(按O(log n)的顺序),同时避免了像AVL,red-blackm,AA等确定性平衡树所需的复杂(和昂贵)重新平衡操作. .

我们知道,如果我们将随机密钥添加到简单的BST中,我们可以预期它是合理平衡的.一个简单的原因是n个节点的非均衡树的数量远远低于"几乎平衡的"树的数量,因此,插入密钥的随机顺序很可能以可接受的树结束.

在这种情况下,在"计算机程序设计的艺术"中,Knuth给出了一点点多于1.3*lg2(n)作为相当好的路径的平均长度.他还说,从随机树中删除一个随机密钥可以保持其随机性(因此它具有良好的平均平衡).

那么,似乎二进制搜索树以随机顺序插入和删除密钥,很可能为所有三个操作提供O(log n)顺序的性能:搜索,插入和删除.

也就是说,我想知道以下方法是否会提供相同的良好属性:

  • 采用已知为"好"的散列函数h(x)(例如,它确保密钥的均匀扩展)
  • 使用键上h(x)设置的顺序而不是k上的顺序.
  • 如果发生碰撞,请按钥匙订购.如果散列键足够好并且散列函数的范围远大于键的集合,那么这应该是罕见的.

举例来说,按顺序插入的密钥{4,3,5,1,2}的BST将是:

                  4
                 / \
                3   5
               /\
              1  2
Run Code Online (Sandbox Code Playgroud)

假设哈希函数将它们映射到(分别){221,142,12,380,18),我们就会得到.

                    221(4)
                   /   \
              142(3)  380(1)
             /    \
           12(5) 18(2)
Run Code Online (Sandbox Code Playgroud)

关键点是"常规"BST可能会退化,因为键是按照用于将它们存储在树中的相同排序关系插入的(它们的"自然"排序,例如字符串的字母顺序)但是哈希函数在键上引入与"自然"完全无关的排序,因此,应该给出与按随机顺序插入键相同的结果.

一个强有力的假设是哈希函数是"好的",但我认为它不是一个不合理的.

我没有在文献中找到任何类似方法的参考,所以它可能是完全错误的,但我不明白为什么!

你觉得我的推理有什么缺点吗?有人已经尝试过吗?

hash binary-tree data-structures

4
推荐指数
1
解决办法
1196
查看次数

解析HTML以使用C#获取内容

我正在编写一个抓取一组网页的应用程序.我不想获取页面的整个源代码,而是将所有内容存储起来并存储,并能够将页面作为纯文本存储在数据库中.内容将在其他应用程序中使用,而不是由用户阅读,因此不需要它完全是人类可读的.

起初,我正在考虑使用正则表达式,但我无法控制网页的有效性,并且很有可能没有正则表达式会给我内容.

如果我在字符串中有源代码,我怎样才能将该源代码串转换为C#中的内容?

c# string html-parsing

9
推荐指数
2
解决办法
5万
查看次数

如何在sql server数据库中找到常量的用法

有没有办法搜索(存储过程,函数,视图)的集合来使用常量?

我有一个问题,我有一个SQL服务器数据库.它声明了很多存储过程和函数.我正在寻找"115"的用法,这恰好是付费代码.我原本没有编写所有代码,因此我正在寻找声明常量的任何地方,或字面意思使用字符串"115".

sql t-sql sql-server search constants

2
推荐指数
1
解决办法
634
查看次数

使用jQuery封装UI组件

我正在构建一个涉及创建几个独特的UI"小部件"的应用程序,我很难找到一个很好的做法,用jQuery封装这些UI组件背后的逻辑.这些主要是一次性组件,不会在应用程序的多个位置重复使用.

我一直在尝试使用lowpro插件,虽然它确实允许我想要的更多或更少,但我觉得我正在使用它来反对"jQuery方式".

为了提供一些上下文,这里是我使用lowpro编写的缩写的缩写.这是一个可排序的列表,其他元素可以成为药物.当它初始化为空时,它会显示一个占位符.

FieldList = $.klass({
  initialize: function() {
    this.placeholder = $('#get-started-placeholder');
    if (this.items().length == 0) {
      this.deactivateList();
    } else {
      this.activateList();
    }
  },

  items: function() {
    return this.element.children('li:visible');
  },

  deactivateList: function() {
    this.element.hide();
    this.element.sortable('destroy');
    this.placeholder.show();
    var instance = this;
    this.placeholder.droppable({
      hoverClass: 'hovered',
      drop: function(e, ui) { instance.receiveFirstField(ui.helper); }
    });
  },

  activateList: function() {
    this.placeholder.hide();
    this.placeholder.droppable('destroy');
    this.element.show();
    var instance = this;
    this.element.sortable({
      placeholder: 'placeholder',
      forcePlaceholderSize: false,
      tolerance: 'pointer',
      handle: 'h4',
      opacity: 0.9,
      zIndex: 90,
      stop: function(e, …
Run Code Online (Sandbox Code Playgroud)

jquery

6
推荐指数
1
解决办法
800
查看次数

如何调试第一行之前发生的iPhone应用程序错误

我有一个相当简单的应用程序.它汇编很好.不幸的是,当我构建和运行时,它甚至在第一行代码之前就失败了,因此我甚至无法调试它.

我从哪里开始?我确实有堆栈轨道.替代文字

iphone terminate

8
推荐指数
1
解决办法
185
查看次数

如何关闭Android设备?

我怎么能通过java代码关闭Android设备?
它甚至可能吗?我需要特殊权限才能执行此操作吗?

android

8
推荐指数
1
解决办法
8566
查看次数

如何使用JDBC引用/转义列名等标识符?

不同的数据库服务器使用不同的方式引用和转义标识符

例如,"foo bar"vs"foo bar"vs [foo bar],或"10"""vs"10 \"",或者某些数据库需要引用FooBar或数组等标识符,而其他数据库则不需要引用.

是否有任何API方法可以为给定的数据库连接正确执行引用/转义?或任何替代解决方案?

java jdbc

8
推荐指数
3
解决办法
5251
查看次数

如何在PowerShell中输出内容

我正在批处理文件中运行PowerShell脚本.该脚本获取一个网页并检查该页面的内容是否为字符串"OK".

PowerShell脚本向批处理脚本返回错误级别.

批处理脚本由ScriptFTP执行,ScriptFTP是一个FTP自动化程序.如果发生错误,我可以让ScriptFTP通过电子邮件将完整的控制台输出发送给管理员.

在PowerShell脚本中,如果它不是"OK",我想从网站输出返回值,因此错误消息包含在控制台输出中,因此也包含在状态邮件中.

我是PowerShell的新手,不知道要使用哪个输出函数.我可以看到三个:

  • 写主机
  • 写输出
  • 写入错误

用什么来写Windows等价的东西是正确的stdout

windows powershell

197
推荐指数
5
解决办法
54万
查看次数


lseek()返回0后跟新的open()

我有以下代码(它是"示例"代码,所以没什么特别的):

#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
    char buffer[9];
    int fp = open("test.txt", O_RDONLY);

    if (fp != -1) // If file opened successfully
    {
        off_t offset = lseek(fp, 2, SEEK_SET); // Seek from start of file
        ssize_t count = read(fp, buffer, strlen(buffer));
        if (count > 0) // No errors (-1) and at least one byte (not 0) was read
        {
            printf("Read test.txt %d characters from start: %s\n", offset, buffer);
        }

        close(fp);
    }

    int …
Run Code Online (Sandbox Code Playgroud)

c posix file

0
推荐指数
1
解决办法
1310
查看次数