C#学习教程:在c#中按第一个元素的升序对二维数组行进行排序示例{{5,7,6},{2,9,6},{4,8,1}}->{{2,9,6},{4,8,1},{5,7,6}}我可以找到行中的最大元素,但我现在不知道如何对行进行排序。publicdouble[]maxInRow(double[,]n){double[]result=newdouble[n.GetLength(0)];对于(inti=0;iy[0]);varsortedBySecondVal=x.OrderBy(y=>y[1]);//试着猜测也许这样更好varsorted=x.OrderBy(y=>y[0]).ThenBy(y=>y[1]).ThenBy(y=>y[2]);如果性能不是很关键,那么你可以将二维数组转换为行数组,按OrderBy排序,提供Max作为条件,然后将结果转换回二维数组:privatestaticT[][]Convert(T[,]source,intfirstDim,intsecondDim){T[][]result=newT[firstDim][];for(inti=0;i(T[][]source,intfirstDim,intsecondDim){varresult=newT[firstDim,secondDim];对于(inti=0;irow.Max()).ToArray();双[,]结果=ConvertBack(排序,firstDim,secondDim);你不需要像上面那样的任何额外的方法,只需要为二维数组实现排序方法。此排序算法与一维数组的排序算法相同,只是您还需要第三个循环来交换行的元素。publicstaticvoidSort(double[,]n){for(inti=0;in[j,0])//按每行的第一个索引升序排序{for(intk=0;k你可以调用它.Sort(your2dArray);请注意,该算法可能会变得非常慢,正如AlexeiLevenkov所说。因此,如果这里的性能不重要,请使用它。如果使用锯齿状数组而不是2Darrays,则可以使事情变得更快。linq还支持1D数组(因此也是交错数组),它实现了IEnumerable,您可以使用OrderBy进行快速排序。二维数组不用于排序,但无论如何,这就是你如何做的.GetLength(0)];for(inti=0;i.Default;Array.Sort(sortIndex,(a,b)=>comparer.Compare(array[a,0],array[b,0]));//重新排序数组使用“原位”算法vartemp=newT[array.GetLength(1)];for(inti=0;i并按如下方式使用它double[,]data={{5,7,6},{2,9,6},{4,8,1}};data.SortByFirstColumn();此实现不受影响。有关其工作原理和其他一些选项的更多解释,请参阅我的回答如何对大型二维数组C#进行排序如果您想按第一列排序,然后是第二列,然后是第三列,依此类推所有列,您可以这样做:以上就是C#学习教程:Sort2darrayrowsinascendingorderofthefirstelementinc#分享的所有内容,如果对大家有用,需要进一步了解C#学习教程,希望大家付费更多关注---voidMain(){varinput=newdouble[,]{{5,7,6},{2,9,6},{2,5,6},{4,8,1}};排序(输入);//现在输入://{{2,5,6},{2,9,6},{4,8,1},{5,7,6}}}publicT[,]Sort(T[,]data)whereT:IComparable{//转换为数组数组。varrows=newT[数据。获取长度(0)][];对于(vari=0;i());//将数据写回输入数组。for(vari=0;i:IComparerwhereT:IComparable{publicintCompare(T[]x,T[]y){varcomparer=Comparer.Default;//只要元素不同就比较它们。for(vari=0;i本文收集自网络,不代表立场,如涉及侵权,请点右联系管理员删除,转载请注明出处: