草庐IT

five_sort

全部标签

c# - 为什么返回 IOrderedEnumerable<T> 的 OrderBy 比 Sort 快得多?

这是对这个优秀问题的跟进C#SortandOrderBycomparison.我将使用相同的示例:Listpersons=newList();persons.Add(newPerson("P005","Janson"));persons.Add(newPerson("P002","Aravind"));persons.Add(newPerson("P007","Kazhal"));争论的方法是:persons.Sort((p1,p2)=>string.Compare(p1.Name,p2.Name,true));//andpersons.OrderBy(n=>n.Name);首先让我说

c# - 流利的断言 : equivalence of sorted lists

我正在尝试使用C#中的FluentAssertions建立两个列表的等价性,其中有两点很重要:元素是通过它们持有的值来比较的,而不是通过引用(即它们是等价的,而不是相等的)列表中元素的顺序很重要FluentAssertions(甚至NUnit)中没有执行此操作的函数吗?干杯! 最佳答案 默认情况下,ShouldBeEquivalentTo()将忽略集合中的顺序,因为在大多数情况下,如果两个集合以任何顺序包含相同的项,则它们是等价的。如果您确实关心顺序,只需在options=>参数上使用WithStrictOrdering()的重载之

c# - 与 LINQ 相比,为什么 Array.Sort() 这么慢?

我制作了快速测试应用程序来比较LINQ排序与Array.Sort在我的自定义对象上的排序。Array.Sort似乎非常慢!我的自定义类是这样的:classPerson:IComparable{publicintAge{get;set;}publicstringName{get;set;}publicintCompareTo(Personobj){returnthis.Age.CompareTo(obj.Age);}publicPerson(){}}然后我在main()中创建了我的测试人员:stringname="Mr.Tomek";Randomr=newRandom();intsize

c# - 为什么 List<T>.Sort 方法重新排序等于 IComparable<T> 元素?

我对ListSort方法处理排序的方式有疑问。给定以下元素:classElement:IComparable{publicintPriority{get;set;}publicstringDescription{get;set;}publicintCompareTo(Elementother){returnPriority.CompareTo(other.Priority);}}如果我尝试这样排序:Listelements=newList(){newElement(){Priority=1,Description="First"},newElement(){Priority=1,Des

c# - 如何在 C# 中计算 "median of five"?

5的中位数有时用作算法设计中的练习,并且众所周知仅使用6次比较即可计算。在C#中实现此“使用6次比较的5的中位数”的最佳方法是什么?我所有的尝试似乎都导致了笨拙的代码:(我需要漂亮且可读的代码,同时仍然只使用6次比较。publicdoublemedianOfFive(doublea,doubleb,doublec,doubled,doublee){////returnmedian//returnc;}注意:我想我也应该在这里提供“算法”:我发现自己无法像Azereal在他的论坛帖子中那样清楚地解释算法。所以我会在这里引用他的帖子。来自http://www.ocf.berkeley.ed

C# linq sort - 实例化 IComparer 的快速方法

当你使用linq时,你有c.Sort()有没有什么好的内联方式来定义Comparison和/或IComparer类,而无需实际创建单独的类? 最佳答案 这是lambda表达式的用途之一:c.Sort((x,y)=>x.A.CompareTo(y.A)) 关于C#linqsort-实例化IComparer的快速方法,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1381564/

c# - 为什么 List.Sort() 是实例方法而 Array.Sort() 是静态的?

我试图理解这部分语言背后的设计决策。我承认我对这一切都很陌生,但这最初让我感到困惑,我想知道我是否遗漏了一个明显的原因。考虑以下代码:ListMyList=newList(){5,4,3,2,1};int[]MyArray={5,4,3,2,1};//SortthelistMyList.Sort();//Thiswasaninstancemethod//SorttheArrayArray.Sort(MyArray);//Thiswasastaticmethod为什么它们不以相同的方式实现-凭直觉对我来说,如果它们都是实例方法会更有意义? 最佳答案

c# - 在 C# 中随机 "sort"(Shuffle) 整数列表的最有效方法

我需要以最有效的方式对整数列表(0-1999)进行随机“排序”。有什么想法吗?目前,我正在做这样的事情:bool[]bIndexSet=newbool[iItemCount];for(intiCurIndex=0;iCurIndex 最佳答案 一个好的线性时间混洗算法是Fisher-Yatesshuffle.您会发现您提出的算法存在的一个问题是,当您接近洗牌结束时,您的循环将花费大量时间来寻找尚未交换的随机选择的元素。一旦到达要交换的最后一个元素,这可能需要一段不确定的时间。此外,如果要排序的元素数量为奇数,您的算法似乎永远不会终止

C# Sort 和 OrderBy 比较

我可以使用Sort或OrderBy对列表进行排序。哪个更快?都在做同样的事情算法?Listpersons=newList();persons.Add(newPerson("P005","Janson"));persons.Add(newPerson("P002","Aravind"));persons.Add(newPerson("P007","Kazhal"));1.persons.Sort((p1,p2)=>string.Compare(p1.Name,p2.Name,true));2.varquery=persons.OrderBy(n=>n.Name,newNameCompar

javascript - 有什么方法可以扩展 javascript 的 array.sort() 方法以接受另一个参数?

我正在尝试对一组对象进行排序。我不想为每个属性编写自定义排序方法。我是否可以扩展内置的array.sort()方法来接受一个额外的参数,描述要排序的属性?例如,array.sort(function(a,b,attr){returna.attr-b.attr;},'name'); 最佳答案 编写一个接受属性名的函数生成器:functionpropComparator(prop){returnfunction(a,b){returna[prop]-b[prop];}}arr.sort(propComparator('name'));您