Questions tagged «algorithms»

在数学和计算机科学中,算法是一种有效方法,表示为用于计算函数的定义明确的指令的有限列表。算法用于计算,数据处理和自动推理。

11
哪种哈希算法最适合唯一性和速度?
哪种哈希算法最适合唯一性和速度?示例(良好)用法包括哈希字典。 我知道有SHA-256之类的东西,但是这些算法被设计为安全的,这通常意味着它们比不那么独特的算法要慢。我希望哈希算法的设计速度要快,但要保持相当独特以避免冲突。
1387 algorithms  hashing 

13
只是我还是这令人困惑的技术面试问题?[关闭]
背景 我只是在一次技术采访中被要求写一个遍历“对象”(注意引号)的算法,其中A等于B且B等于C且A等于C。 而已。那就是我得到的所有信息。 我问面试官的目标是什么,但显然没有目标,只是“遍历”“目标”。 我对其他人一无所知,但这对我来说似乎是一个愚蠢的问题。我再次问,“我在寻找价值吗?”。不。只是“遍历”它。 为什么我要无休止地遍历这个“对象”?可能融化我的处理器? 面试官的回答是我应该写一个递归函数。 好的,为什么不简单地要求我编写一个递归函数呢?谁会写一个永无止境的递归函数? 我的问题: 这对其他人是否是一个有效的问题,如果可以,那么您是否可以暗示我可能会缺少的东西?也许我在解决现实世界问题上考虑得太辛苦了。我已经成功编码了很长时间了,但是这个技术面试过程让我感到自己一无所知。

14
简单可靠地检测文本代码的方法?
GMail具有此功能,如果您尝试发送它认为可能带有附件的电子邮件,它将向您发出警告。 由于GMail检测到see the attached电子邮件中的字符串,但没有实际附件,因此当我单击“发送”按钮时,它会通过“确定” /“取消”对话框警告我。 我们在堆栈溢出方面有一个相关的问题。也就是说,当用户进入后像这样的: 我的问题是我需要更改数据库,但我不会创建 一个新的连接。例: 数据集dsMasterInfo = new DataSet(); 数据库db = DatabaseFactory.CreateDatabase(“ ConnectionString”); DbCommand dbCommand = db.GetStoredProcCommand(“ uspGetMasterName”); 该用户未将其代码格式化为代码! 也就是说,他们没有为每个Markdown缩进4个空格,也没有使用代码按钮(或键盘快捷键ctrl+ k)为他们这样做。 因此,我们的系统正在接受很多编辑,人们必须进入这些编辑区域,并手动为无法解决该问题的人们设置代码格式。这导致很多肚皮舞。我们已经多次改善了编辑器的帮助,但是由于没有赶到用户家并为他们按下键盘上的正确按钮,我们无所适从,不知道下一步该怎么做。 这就是我们考虑使用Google GMail样式警告的原因: 您是要发布代码吗? 您编写了我们认为看起来像代码的内容,但是没有使用工具栏代码按钮或ctrl+ k代码格式化命令通过缩进4个空格来将其格式化为代码。 但是,提出此警告要求我们检测问题中是否存在我们认为未格式化的代码。一种简单,半可靠的方法是什么? 根据Markdown的规定,代码总是缩进4个空格或在反引号内,因此任何格式正确的代码都可以立即从支票中丢弃。 这仅是警告,并且仅适用于声誉低下的用户提出第一个问题(或提供其第一个答案),因此,只要它们的错误率在5%或以下,就可以接受一些误报。 关于堆栈溢出的问题可以使用任何语言,尽管实际上可以将检查范围限制为“十大”语言。每个标记页面都是C#,Java,PHP,JavaScript,Objective-C,C,C ++,Python,Ruby。 使用Stack Overflow Creative Commons数据转储来审核您可能的解决方案(或仅在Stack Overflow 的前10个标签中选择几个问题),然后查看其效果。 伪代码很好,但是如果您想变得更加友好,我们可以使用c#。 越简单越好(只要可行)。吻!如果您的解决方案需要我们尝试用10种不同的编译器来编译帖子,或者需要一群人来手动训练贝叶斯推理引擎,那...就不完全是我们的初衷。

4
我应该“识别”并按名称知道哪些算法/数据结构?[关闭]
我想将自己视为一个经验丰富的程序员。我已经编程超过5年了。我的弱点是术语。我是自学成才的,因此尽管我知道如何编程,但我不了解计算机科学的一些更正式的方面。那么,按名称我可以识别和知道的实用算法/数据结构是什么? 请注意,我并不是在要求有关实现算法的书建议。我不在乎实现它们,我只是想知道什么时候算法/数据结构可以很好地解决问题。我要更多的是我应该“识别”的算法/数据结构的列表。例如,我知道解决此类问题的方法: 您管理一组标记为0-999的储物柜。人们来找您租用储物柜,然后回来找回储物柜钥匙。您将如何构建一个软件来管理哪些储物柜是免费的,哪些储物柜正在使用? 解决方案是队列或堆栈。 我正在寻找的是诸如“在什么情况下应使用B树-在此处应使用哪种搜索算法”之类的信息。也许还可以快速介绍一下如何使用更复杂(但常用的)数据结构/算法起作用。 我尝试查看Wikipedia的数据结构和算法列表,但我认为这有点过头了。因此,我正在寻找我应该认识的基本要素?

1
Dijkstra给志愿者做了什么任务,他的论文“谦虚的程序员”中提到了这一点?
在Dijkstra的论文“谦虚程序员”中,他提到自己给一些志愿者解决了一个问题: “我已经对真正有经验的志愿者进行了一些编程实验,但结果出乎意料,出乎意料。我的志愿者中没有一个人找到明显且最优雅的解决方案。经过仔细分析,结果发现有一个共同的来源:他们的重复概念与相关的受控变量要加强的思想紧密联系在一起,以至于他们在精神上看不见明显的事物。他们的解决方案效率低下,不必要地难以理解,并且花了很长时间才找到它们。” Dijkstra给志愿者的问题是什么?有什么解决方案?


11
为什么使用抽象(例如LINQ)如此禁忌?[关闭]
我是一个独立承包商,因此,我每年要面试3-4次新演出。我现在正处于那个周期之中,尽管我觉得面试进行得很顺利,但还是被拒绝了。今年我发生了两次相同的事情。 现在,我不是一个完美的人,而且我不希望每个组织都适合。就是说,我的平均命中率比平时低,所以我礼貌地向我的最后一个面试官询问一些建设性的反馈意见,他答应了! 根据访问者的说法,最主要的是,我似乎过于倾向于使用抽象(例如LINQ),而不是倾向于较低级别的有机增长算法。 从表面上看,这是有道理的-实际上,这也使其他拒绝也有意义,因为我在那些访谈中也对LINQ感到不满,而且访调员似乎对LINQ并不了解很多(即使他们是.NET)。伙计们)。 因此,现在我要提一个问题:如果我们应该“站在巨人的肩膀上”并使用我们可以使用的抽象(如LINQ),那么为什么有些人认为它是忌讳的呢?如果代码无需花费额外成本即可达到相同的目标,那么将代码“下架”是否有意义? 在我看来,LINQ,即使它是一种抽象,也只是对为实现完全相同的目的而编写的所有相同算法的抽象。只有性能测试可以告诉您您的自定义方法是否更好,但是如果LINQ之类的东西满足要求,为什么首先要编写自己的类呢? 我的意思不是在这里专注于LINQ。我敢肯定,JAVA世界具有可比性,我只是想知道为什么有些人对使用他们自己未编写的抽象的想法感到如此不舒服。 更新 正如Euphoric指出的那样,在Java世界中,没有任何东西可以与LINQ相提并论。 因此,如果您是在.NET堆栈上进行开发,为什么不总是尝试使用它呢?人们是否可能不完全了解它的作用?

7
对于程序员来说,知道如何从内存中实现QuickSort / MergeSort算法有多重要?[关闭]
我正在查看笔记,偶然发现了各种排序算法的实现。 当我尝试理解QuickSort和MergeSort的实现时,我想到,尽管我以谋生为目的进行编程,并认为自己做得很好,但是我没有摄影记忆,也没有足够的脑力去实现这些算法而没有依靠我的笔记。我只记得其中一些算法是稳定的,而有些则不是。有些需要O(nlog(n))或O(n ^ 2)时间来完成。有些内存比其他内存更多... 如果不是这样的话,我会觉得我不应该得到这份工作,因为我的职位不需要我使用除标准API之外的任何排序算法。我的意思是,你们中有多少人具有编程职位,实际上您必须自己记住或想出这类东西很重要?
58 algorithms 

11
有能力的程序员应该能够提出自己的最短路径算法吗?
我作为计算机程序员的能力正遭受信心危机。 昨天,我尝试提出自己的图形最短路径算法,几个小时后,我简单地投入毛巾,学习了Dijkstra的算法。 这是一个好的程序员应该能够在几个小时内“重新发明”的东西吗?还是我不切实际? 哦,好吧,至少我能够重塑气泡排序:D
58 algorithms 

3
递归和核心递归之间有什么区别?
这些有什么区别? 递归 核心递归 在Wikipedia上,几乎没有信息,也没有清晰的代码来解释这些术语。 有哪些非常简单的示例可以解释这些术语? corecursion如何实现递归的对偶? 有没有经典的corecusive算法?

11
在纸上写我的解决问题的方法?[关闭]
我是计算机科学专业的大一学生,我们刚刚开始用Python做一些实际的项目。我发现使用教授在课堂上建议的笔和纸的方法时,我的效率很高。但是当我无法写下问题并在纸上解决算法时,我真的很慢。在实验期间,我似乎总是不得不将作业带回我的宿舍。当我到达那里并把它写出来时,我解决了让我全班学习仅5分钟的问题。 也许是因为我感到压力重重,看到人们在我之前解决了实验室。也许这是笔和纸的方法。 我在论坛上浏览,有人写道,如果您必须在纸上编写程序,那么您不应该是程序员。我真的很担心,因为当我看到程序在做什么并且在键入实际代码之前跟踪程序运行的过程时,我会好得多。难道我做错了什么? 编辑:很抱歉,不清楚,但是当我说在纸上写时,我的意思是我的问题解决方法(例如,编写示例,使用值创建表等)不是我的实际代码。我只是用纸来表达我的想法。

8
我是CS学生,说实话,我听不懂Knuth的书[关闭]
我偶然发现了比尔·盖茨的这句话:“如果您能读懂全部内容,则绝对应该给我一份简历。” 他在谈论编程艺术书籍。所以我很好奇,想读全部。但老实说,我不明白。 我真的不是那个知识分子。因此,这应该是我无法理解的原因,但我渴望学习。我目前正在阅读有关基本算法的第1卷。有没有适合像我这样的新手/新手入门的书籍,可以帮助我建立知识,以便将来我能轻松阅读Knuth的书?


2
双向数据同步的最佳实践/模式
在我的工作中,经常会出现数据库系统之间的2路数据同步的想法。经典示例是两个稍微不同的CRM系统(例如,Raiser's Edge和Salesforce),并且需要在它们之间进行双向联系人数据同步。 撇开API的考虑,假设您有一个要同步的共享密钥,并且纯粹考虑要使用的算法/模式,这是非技术人员经常低估的一项任务。 例如,您必须当心: 您可以轻松地检测到两个系统中的哪些记录已更改(或者您必须比较两个系统之间的所有记录以检测更改) 如果要进行每N小时一次的同步,那么在两个系统中相同记录或多或少同时发生更改的情况下,如何处理冲突 如果您要进行实时同步(例如,一个系统中的更新会立即触发另一个系统的更新),如何处理由于错误或系统崩溃而导致的时间差异。 我个人可以考虑解决所有问题的方法,但是我想知道是否可以参考任何众所周知的模式,文献或最佳实践。

5
获得加权随机项目
我有这个桌子 + ----------------- + | 水果 重量 + ----------------- + | 苹果| 4 | | 橙色| 2 | | 柠檬| 1 | + ----------------- + 我需要归还随机水果。但是苹果的采摘频率应该是柠檬的 4倍和橙子的 2倍。 在更一般的情况下,它应该f(weight)经常出现。 什么是实现此行为的良好通用算法? 也许在Ruby上有一些现成的宝石?:) PS 我已经在Ruby https://github.com/fl00r/pickup中实现了当前算法
51 algorithms  ruby  math  random 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.