Tag: 算法

将分隔符添加到要显示的项目列表中

我有一个项目列表,我希望在C#中显示它们之间的分隔符。 使用普通的迭代器,我会在开头或结尾处添加一个额外的分隔符: string[] sa = {“one”, “two”, “three”, “four”}; string ns = “”; foreach(string s in sa) { ns += s + ” * “; } // ns has a trailing *: // one * two * three * four * 现在我可以使用for循环来解决这个问题: ns = “”; for(int i=0; i<sa.Length; i++) { ns += sa[i]; if(i != […]

一组随机浮点数的最佳排序算法是什么?

我的一位同事今天下午把这个问题悬在空中,让我感到好奇。 我精通排序algos,但缺乏compsci / compeng的正式学位(我不喜欢承认),不能真正指责这一点。 :p 哦,是的,这在C#/ .NET实现的上下文中是温和的…以防万一改变了一些事情。 多谢你们。 🙂

C#重新排列字符串中的字符的算法

我想要一个C#算法,它将字符重新排列在一个动态长度的字符串中。 找不到一个,我知道必须有一个。 该算法必须重新排列元素以形成所有可能组合的新字符串。 例如,“cat”会产生以下结果: cat cta tca tac act atc

插入在C#中的字符串数组上排序

如果我有一个字符串数组,例如 string[] names = {“John Doe”, “Doe John”, “Another Name”, “Name Another”}; 如何使用插入排序对此数组进行排序? 维基百科有一些例子: https : //en.wikibooks.org/wiki/Algorithm_implementation/Sorting/Insertion_sort#C.23 static void InsertSort(IComparable[] array) { int i, j; for (i = 1; i = 0) && (array[j].CompareTo(value) > 0)) { array[j + 1] = array[j]; j–; } array[j + 1] = value; } } 和 static void InsertSort(IList […]

用于有界线集合的交叉的有效算法

我有一组配对数字,需要有效地找到包含给定值的对的集合。 给出数字对的以下表示 public class Line { public double Start { get; set; } //is always < end public double End { get; set; } } Lines的集合可以像下面那样在视觉上布局(黑线) 垂直的红线是交叉标准(只是一个简单的数字,如10.123) 我正在寻找一种有效的算法,它只返回与红色相交的黑线,这是基于搜索执行的频率大于集合中Line添加频率的假设。 (显然假设集合很大) 到目前为止,我不太理想的解决方案是 将行创建时插入两个排序列表。 一个在Start排序,另一个在Ended上排序 二进制搜索起始有序列表,以查找起始大于交叉标准的第一行的索引。 (理论上所有包括和在此指数之后的线都是非交叉的) 在(2)中对最终有序列表重复类似的逻辑 比较索引并选择要解析的剩余迭代次数最少的列表 通过手动寻找交叉点迭代所选列表的其余部分

为什么Console.WriteLine会加速我的应用程序?

好的,这有点奇怪。 我有一个算法来找到最高可能的数值回文,它是两个因子的倍数,每个因子都有K个数字。 我用来找到最高有效回文的方法是查看数字集的最高可能回文(即,如果k = 3,则最高可能是999999,然后是998899等)。 然后我检查回文是否有两个K位数的因子。 为了调试,我认为将每个我正在检查的回文打印到控制台是个好主意(以确保我得到它们。令我惊讶的是,添加 Console.WriteLine(palindrome.ToString()); 每次寻找回文的迭代都会使我的运行时间从大约24秒降低到大约10秒到14秒。 为了validation,我多次运行该程序,然后注释掉Console命令并运行了几次,每次使用 Console命令时都会更短。 这看起来很怪异,有什么想法吗? 如果有人想对此进行打击,这是来源: static double GetHighestPalindromeBench(int k) { //Because the result of k == 1 is a known quantity, and results in aberrant behavior in the algorithm, handle as separate case if (k == 1) { return 9; } ///////////////////////////////////// //These variables will be used […]

尝试计算框的分数时的十进制精度损失

我有一个场景,我有一个包含3jar的标准盒子。 出于显示和查询的目的,我必须根据其标准配置的十进制数量进行报告。 不可能说1盒3jar,1盒2jar……等等 例如,最初我将有1盒3jar 然后我删除1可以产生0.66重复的3jarjar 然后我再删除1 个jar子,产生0.33个重复的3个jar子 然后我删除最终可以导致0.0000000000000000000000000001盒3jar 当我删除最终的jar头时,我希望该值为0盒3jar,因为现在每个jar子都已从原始盒子中移除。 我很欣赏由于在处理有限数量的位时无法表示0.33重复这一事实而导致精度损失。 问题:对于那些需要使用舍入(可能是财务)的系统有更多经验的人,我有哪些选择来处理这个问题? 如何删除最后一个可能意味着该框不再存在? 编辑: 到底。 我使用了Loren Pechtel的建议并存储了jar头的数量,然后当我需要显示多少标准盒子时我将jar头总数除以标准盒子中的jar头数量仍然给出递归结果但这对报告来说很好事情的一面。 以下是一些代码,我希望这些代码可以帮助更多地概述问题: – static void Main(string[] args) { var box = new StandardBox(3); var boxDetail = new BoxDetail(1.0m, box); var allBoxes = new AllBoxes(); allBoxes.AddBox(boxDetail); allBoxes.RemoveItemFromBox(boxDetail, 1.0m); Console.WriteLine(allBoxes); allBoxes.RemoveItemFromBox(boxDetail, 1.0m); Console.WriteLine(allBoxes); allBoxes.RemoveItemFromBox(boxDetail, 1.0m); Console.WriteLine(allBoxes); Console.ReadLine(); } } public class StandardBox […]

解析带有通配符的规范路径

我正在编写C#函数,它检索一些匹配模式的文件。 输入:C:\ abc * \ abc?\ testfile。* 输出:匹配所有文件。 我以为我可以通过递归来实现。 但这并不容易:( 你有一个很好的算法吗? 更新 : 我做到了。 谢谢Kieren 🙂 void PrintAllFiles(DirectoryInfo currentDir, string currentPattern, string nextPatten) { DirectoryInfo[] dis = currentDir.GetDirectories(currentPattern); if (dis.Length > 0) { string[] remainPattern = nextPatten.Split(“\\”.ToCharArray()); if (remainPattern.Length > 0) { foreach (DirectoryInfo di in dis) { PrintAllFiles(di, remainPattern.First(), string.Join(“\\”, remainPattern.Skip(1).ToArray())); } } } […]

你知道Gauss Newton和Levenberg Marquardt方法的C#实现吗?

我正在寻找Gauss Newton和Levenberg Marquardt算法的C#实现。 那里有没有“受托人”的C#库吗?

C#代码或算法快速计算大字符串之间的距离?

嗨,谢谢你的期待! 背景 我有一个包含1900个节点的XML文件,这些节点本身包含大约3400个字符的编码数据字符串。 作为我正在开发的应用程序的用例的一部分,我需要能够在运行时获取“基准”字符串,并从XML文件中找到最接近的匹配项。 请注意,XML与应用程序没有密切关系,我可能会继续使用SQL,但就今天而言,我只需要一个容易存储数据并certificate概念的地方。 我使用的是.NET 4.0,C#,表单app,LINQ等。 题 我如何找到最接近的匹配? 海明? 莱文斯坦? 网上有很多代码样本,但大多数是针对小字符串比较(“ant”与“阿姨”)或完全匹配。 我很少有完全匹配; 我只需要最接近的比赛。 提前致谢! 马特