草庐IT

partial_sort_copy

全部标签

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# - 可以在不执行 Marshal.Copy 的情况下将 IntPtr 转换为字节数组吗?

我想从IntPtr指针获取数据到字节数组。我可以使用下面的代码来做到这一点:IntPtrintPtr=GetBuff();byte[]b=newbyte[length];Marshal.Copy(intPtr,b,0,length);但上面的代码强制执行从IntPtr到字节数组的复制操作。当相关数据很大时,这不是一个好的解决方案。有什么方法可以将IntPtr转换为字节数组吗?例如,以下是否可行:byte[]b=(byte[])intPtr这将消除复制操作的需要。另外:我们如何确定IntPtr指向的数据的长度? 最佳答案 正如其他人所

c# - Array.Copy 是否适用于多维数组?

这段代码工作正常:varnewArray=newRectangle[newHeight,newWidth];for(intx=0;x=width)||(y>=height)?Rectangle.Empty:tiles[y,x];但我不太幸运用Array.Copy替换它。基本上,如果调整大小的数组更大,它只会在边缘添加空白矩形。如果它更小,那么它应该只切掉边缘。执行此操作时:Array.Copy(tiles,newArray,newWidth*newHeight);它打乱了数组,它的所有内容变得无序并且不保留它们的原始索引。也许我只是在胡思乱想什么的? 最佳答

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# 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# - RenderSection() inside partial with master page

我在母版页(布局)中添加了一个部分“侧边栏”,在这个部分中我正在使用:@RenderSection("SearchList",required:false)在其中一个使用母版页的View上:@sectionSearchList{//bunchofhtml}但它给了我错误:Thefile"~/Views/Shared/_SideBar.cshtml"cannotberequesteddirectlybecauseitcallsthe"IsSectionDefined"method.这里有什么问题吗? 最佳答案 Razor当前不支持您尝

c# - 最佳实践 : When not/to use partial classes

一段时间以来,我一直在使用部分类修饰符,以便将辅助类放入它们自己的文件中。今天我们来了一个新人,他说他合作的最后一个团队不允许为此使用分部类,因为修改单独文件中的辅助类会导致主要分部类文件出现问题随着变化。此外,他们只被允许在主类中放置一个辅助类作为最后的手段,这样一切都保持解耦。你怎么看?使用这样的部分类是否有任何问题,还是归结为偏好?例如,我通常有这样的东西:主类.csMainClass.Helper1.csMainClass.Helper2.cs...//InsideofMainClass.csIhavecodelikethis:publicabstractpartialclas

c# - 在 Visual Studio IDE 中查找 Partial Class 的另一部分?

假设我的应用程序中有一个partialclass。假设我在VisualStudio中打开了此类的一部分,我想找到其他部分。我怎样才能做到这一点?是否有键盘快捷键或任何其他方法可用于快速导航到类(class)的其他部分?这会很有用,因为在大型应用程序中,有太多单独的*.cs文件,手动搜索部分类的效率非常低。 最佳答案 如果打开类名称的上下文菜单并单击“转到定义(F12)”,则“查找符号结果”面板将显示在VisualStudio的底部(默认情况下)。在这里您会找到该类的所有(部分)定义。 关

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.您会发现您提出的算法存在的一个问题是,当您接近洗牌结束时,您的循环将花费大量时间来寻找尚未交换的随机选择的元素。一旦到达要交换的最后一个元素,这可能需要一段不确定的时间。此外,如果要排序的元素数量为奇数,您的算法似乎永远不会终止