我已经注意到O(1)在讨论涉及散列和搜索类型的算法时的一些非常奇怪的用法,通常是在使用语言系统提供的字典类型的上下文中,或者使用使用数组使用的字典或散列数组类型 - 索引符号.
基本上,O(1)意味着以恒定时间和(通常)固定空间为界.一些非常基本的操作是O(1),尽管使用中间语言和特殊虚拟机往往会扭曲思考的人(例如,如何将垃圾收集器和其他动态过程分摊到O(1)活动之外).
但是忽略了延迟,垃圾收集等的摊销,我仍然不明白如何假设某些涉及某种搜索的技术可以是O(1),除非在非常特殊的条件下.
虽然我之前已经注意到这一点,但是在Pandincus问题中出现了一个例子,"'正确'集合用于在C#.NET中获取O(1)时间内的项目?" .
正如我在那里所说的那样,我所知道的唯一一个提供O(1)访问作为保证边界的集合是一个带有整数索引值的固定绑定数组.假设通过一些映射到随机存取存储器来实现该阵列,该存储器使用O(1)操作来定位具有该索引的单元.
对于涉及某种搜索以确定不同类型索引(或具有整数索引的稀疏数组)的匹配单元的位置的集合,生活并不那么容易.特别是,如果存在可能的碰撞和拥堵,则访问不完全是O(1).而如果集合是灵活的,必须认识和摊销扩大基础结构的成本(如树或哈希表),其纾缓交通挤塞(例如,高发病碰撞或树的不平衡).
我永远不会想到将这些灵活和动态的结构称为O(1).然而,我认为它们作为O(1)解决方案提供,而没有任何必须保持的条件,以确保实际上具有O(1)访问(以及使该常数可忽略地小).
问题:所有这些准备都是一个问题.O(1)的偶然性是什么?为什么这么盲目地被接受?是否认识到即使O(1)可能不合需要地大,即使接近常数?或者O(1)只是将计算复杂性概念挪用于非正式用途?我很困惑.
更新:答案和评论指出了我自己定义O(1)的习惯,我已经修复了.我仍然在寻找好的答案,在一些情况下,一些评论主题比他们的答案更有趣.
如果搜索文件夹说我需要做什么 C:\example
然后,我需要浏览每个文件并检查它是否与几个起始字符匹配,以便文件启动
temp****.txt
tempONE.txt
tempTWO.txt
Run Code Online (Sandbox Code Playgroud)
所以如果文件以temp开头并且有一个扩展名.txt我想把那个文件名放到一个File file = new File("C:/example/temp***.txt);所以我可以在文件中读取,然后循环需要移动到下一个文件以检查它是否满足如上.
我使用emacs查看和编辑代码和其他文本文件.我想知道是否有一种向前或向后搜索当前缓冲区中标记的文本的方法.类似于我在记事本或wordpad中可以做的事情.我可以在缓冲区中标记一些文本并执行Cs或Cr并且能够使用标记的文本进行搜索而无需实际输入整个搜索文本吗?
谢谢,
罗希特
我按照http://developer.android.com/guide/topics/search/search-dialog.html上描述的步骤在我的记事本应用程序中实现搜索功能.
我的问题是,当我完成搜索时,新的活动会打开捕获我的搜索查询.但我真正想要的是,查询返回到当前活动而不是开始新活动.
这可能吗?
更新:
AndroidManifest.xml中
<activity android:name="MyNotepad"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.intent.action.SEARCH"></action>
</intent-filter>
<meta-data android:resource="@xml/searchable" android:name="android.app.searchable"></meta-data>
</activity><activity android:name="Preferences" android:label="Preferences" >
</activity>
searchable.xml
<?xml version="1.0" encoding="utf-8"?>
<searchable
xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_name"
android:hint="@string/search_hint">
</searchable>
JAVA代码
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_pad);
Intent intent = getIntent();
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
Toast.makeText(getApplicationContext(), query, Toast.LENGTH_LONG).show();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case R.id.menuItemSearch:
startSearch("", false, null, false);
break;
}
return true; …Run Code Online (Sandbox Code Playgroud) 我正在尝试对序列化列进行简单查询,你是如何做到这一点的?
serialize :mycode, Array
1.9.3p125 :026 > MyModel.find(104).mycode
MyModel Load (0.6ms) SELECT `mymodels`.* FROM `mymodels` WHERE `mymodels`.`id` = 104 LIMIT 1
=> [43565, 43402]
1.9.3p125 :027 > MyModel.find_all_by_mycode("[43402]")
MyModel Load (0.7ms) SELECT `mymodels`.* FROM `mymodels` WHERE `mymodels`.`mycode` = '[43402]'
=> []
1.9.3p125 :028 > MyModel.find_all_by_mycode(43402)
MyModel Load (1.2ms) SELECT `mymodels`.* FROM `mymodels` WHERE `mymodels`.`mycode` = 43402
=> []
1.9.3p125 :029 > MyModel.find_all_by_mycode([43565, 43402])
MyModel Load (1.1ms) SELECT `mymodels`.* FROM `mymodels` WHERE `mymodels`.`mycode` IN (43565, 43402)
=> []
Run Code Online (Sandbox Code Playgroud) 我有对象的数组.
像这样的东西:
var arr = new Array(
{x:1, y:2},
{x:3, y:4}
);
Run Code Online (Sandbox Code Playgroud)
当我尝试:
arr.indexOf({x:1, y:2});
Run Code Online (Sandbox Code Playgroud)
它回来了-1.
如果我有字符串或数字或其他类型的元素但对象,那么indexOf()工作正常.
有谁知道为什么以及如何在数组中搜索对象元素?
当然,我的意思是除了为对象创建字符串哈希键并将其赋予数组之外的其他方式......
有没有办法查询特定链接类型的所有问题?
例如,让一个依赖关系链接,问题可以"依赖"另一个问题.是否有查询来查找依赖于其他问题的所有问题(也就是"依赖于"链接的所有问题)?
我知道有LinkedIssues(key,linkType)函数返回所有问题的关键,这些问题的linkType与key问题有关.我想查找带有任何问题的linkType的所有问题.
谢谢!
我想创建一个模糊搜索算法.然而,经过数小时的研究,我真的很挣扎.
我想创建一个算法,在学校名称列表上执行模糊搜索.
这是我到目前为止所看到的:
我的大部分研究都指向Google和Stackoverflow上的" 字符串指标 ",例如:
然而,这仅仅给出了两个字符串相似的分数.我可以想到将其实现为搜索算法的唯一方法是执行线性搜索并对每个字符串执行字符串度量算法,并返回分数高于某个阈值的字符串.(原来我把我的琴弦存放在一棵树上,但这显然不会帮助我!)
虽然这对于小型列表来说并不是一个坏主意,但对于名为100,000个名称的列表来说,这将是一个问题,并且用户执行了许多查询.
我看到的另一种算法是拼写检查方法,您只需搜索所有可能的拼写错误.然而,这也是非常低效的,因为对于长度为7的单词而言需要超过75,000个单词并且错误计数仅为2.
我需要的?
有人可以建议我一个很好的高效模糊搜索算法.有:
我知道所有算法都有其优点和缺点,没有最好的算法.
我希望能够按照以下方式搜索一个表格,因为它可以获得1个方差范围内的所有内容.
数据:
O'Brien Smithe Dolan Smuth Wong Smoth Gunther Smiht
我已经研究过使用Levenshtein距离有没有人知道如何实现它?
我有一系列同类物体,如此;
[
{
"foo" : "bar",
"bar" : "sit"
},
{
"foo" : "lorem",
"bar" : "ipsum"
},
{
"foo" : "dolor",
"bar" : "amet"
}
]
Run Code Online (Sandbox Code Playgroud)
我想用关键字搜索这些对象的值(而不是键),并返回包含任何值中的关键字的对象数组.
因此,例如,使用关键字r,我将获得所有对象(对象#1中的"baR",对象#2中的"loRem"和对象#3中的"doloR").使用关键字lo,我会得到对象2和3("LOrem"和"doLOr")a,我会得到对象1和3,("bAr"和"Amet").foo但是使用关键字,我会得到一个空数组,因为"foo"是一个键,并且在任何值中都找不到(不像"bar")......你明白了.
我该怎么做呢?非常感谢提前!
search ×10
algorithm ×2
javascript ×2
activerecord ×1
android ×1
arrays ×1
collections ×1
data-access ×1
database ×1
directory ×1
emacs ×1
file ×1
for-loop ×1
fuzzy-search ×1
indexof ×1
java ×1
jira ×1
jql ×1
json ×1
mysql ×1
object ×1
string ×1
text ×1
text-editor ×1