Tag: 算法

检查数组是否排序的最快方法

考虑到从一个非常大的函数返回的数组。 如果对数组进行排序,测试的fastest方法是什么? 最简单的方法是: /// /// Determines if int array is sorted from 0 -> Max /// public static bool IsSorted(int[] arr) { for (int i = 1; i arr[i]) { return false; } } return true; }

生成排列时出现System.OutOfMemoryException

我在尝试生成6个字母的排列时收到System.OutOfMemoryException 。 5个字母的排列仍然有效。 这是我用来生成所有排列的代码: private static List getPermutations(int n,string source) { IEnumerable q = source.Select(x => x.ToString()); for (int i = 0; i source, (x, y) => x + y); } return q.ToList(); // THIS IS WHERE THE ERROR HAPPENS } 之后我使用这段代码根据正则表达式过滤它们: private static List filterListByRegex(List list, string regex) { List newList = list.ToList(); for […]

如何使用LINQ从字符串中获取重复字符数组?

如果我有以下字符串: string s = “abcdefghab”; 那么我如何得到一个字符串(或char []),它只包含使用C#和LINQ在原始字符串中重复的字符。 在我的例子中,我希望最终得到“ab”。 虽然没有必要,但我试图在一行LINQ中做到这一点,到目前为止已经提出: s.ToCharArray().OrderBy(a => a)…

shuffle(随机重新排列)List

我需要重新排列我的List数组,它中包含不可确定数量的元素。 有人能举例说明我是怎么做到的,谢谢

高效的算法来获得两个大数之间的素数

我是C#的初学者,我正在尝试编写一个应用程序来获取用户输入的两个数字之间的素数。 问题是:在大数(有效数字在1到1000000000范围内)时,获取素数需要很长时间,并且根据我正在解决的问题,整个操作必须在很短的时间间隔内进行。 这是问题链接以获得更多解释: SPOJ-Prime 这是我的代码中负责获取素数的部分: public void GetPrime() { int L1 = int.Parse(Limits[0]); int L2 = int.Parse(Limits[1]); if (L1 == 1) { L1++; } for (int i = L1; i <= L2; i++) { for (int k = L1; k <= L2; k++) { if (i == k) { continue; } else if (i % […]

C#正常随机数

我想创建一个接受Double mean , Double deviation的函数,并返回一个正态分布的随机数。 例如:如果我传入5.00作为平均值而2.00作为偏差,68%的时间我会得到一个介于3.00和7.00之间的数字 我的统计数据有点弱…… 任何人都知道如何处理这个问题? 我的实现将是C#2.0,但只要数学函数是标准的,就可以用您选择的语言回答。 我认为这实际上可能就是我要找的东西。 任何帮助将此转换为代码? 在此先感谢您的帮助。

C# – 比较字符串相似性

可能重复: 是否有为C#编写的模糊搜索或字符串相似性函数库? 比较2个字符串以查看它们有多相似的最佳方法是什么? 例子: My String My String With Extra Words 要么 My String My Slightly Different String 我要找的是确定每对中第一个和第二个字符串的相似程度。 我想对比较得分,如果字符串足够相似,我会认为它们是匹配对。 有没有一种很好的方法在C#中做到这一点?

人气算法

在SO 18上,Joel提到了一种算法,该算法可以根据项目的年龄和受欢迎程度对项目进行排名,它基于重力。 有人发帖吗? C#会很可爱,但实际上任何语言(好吧,我不能做LISP)都没关系。

如何获得子集的所有可能组合?

考虑这个List List data = new List(); data.Add(“Text1”); data.Add(“Text2”); data.Add(“Text3”); data.Add(“Text4”); 我遇到的问题是:如何获得列表子集的每个组合? 有点像: #Subset Dimension 4 Text1;Text2;Text3;Text4 #Subset Dimension 3 Text1;Text2;Text3; Text1;Text2;Text4; Text1;Text3;Text4; Text2;Text3;Text4; #Subset Dimension 2 Text1;Text2; Text1;Text3; Text1;Text4; Text2;Text3; Text2;Text4; #Subset Dimension 1 Text1; Text2; Text3; Text4; 我提出了一个很好的解决方案,值得在这里分享。

在C#中计算“中位数为5”的代码

注意:请不要将此解释为“作业问题”。 这只是我很想知道的事情:) 中值为5有时用作算法设计中的练习,并且已知仅使用6次比较可计算。 在C# 中实现“使用6次比较的五个中值”的最佳方法是什么? 我所有的尝试似乎都导致代码笨拙:(我需要漂亮可读的代码,同时仍然只使用6次比较。 public double medianOfFive(double a, double b, double c, double d, double e){ // // return median // return c; } 注意:我想我也应该提供“算法”: 我发现自己无法像Azereal在论坛post中那样清楚地解释算法。 所以我会在这里引用他的post。 来自http://www.ocf.berkeley.edu/~wwu/cgi-bin/yabb/YaBB.cgi?board=riddles_cs;action=display;num=1061827085 好吧,我在我的一个任务中提出了这个问题,我转向这个论坛寻求帮助,但没有帮助。 我终于找到了怎么做。 使用前4个元素启动mergesort并订购每对(2个比较) 比较每对中的两个较低的一个并从可能性中消除最低的一个(3个比较) 在没有配对的情况下添加第5个数字并比较两个(4个比较) 比较两个新对中的两个最低对并消除较低对(5个比较) 比较一个单独和最后一对中的较低者,较低的数字是中位数 可能的中位数在肠胃外 (54321) 5:4 3:2 2比较 (4 <5 2 <3 1) 4:2 3比较 2(4 <5 3 1) 1:3 4比较 […]